sed 基本使用

1.指定简单指令 sed [-e] 'instruction' file  只有在命令行上给出多个指令时才需要使用-e选项。sed   ‘s/MA/Mass/' list 

使用单引号可以阻止shell解释编辑指令中的特殊字符或空格。sed 's/MA/, Mass/' list

有三种方式可以指定命令行上的多重指令:

a. 用分号分隔指令。

sed 's/MA/, MAss/; s/ PA/, Penn/' list

b.在每个指令前放-e 

sed -e   ’s/MA/, Mass/‘  -e 's/ PA/, Penn/' list

c.使用Bourne shell 的分行指令功能。在输入单引号后按return键,就会出现多行输入的提示符(>)

sed  '

>s / MA/, Mass/

> s / PA/, Penn/'   list

2.失误的命令

sed -e 's/MA/Mass' list 提示错误  标记搜索和替换命令末尾的斜杆丢失了。

3.脚本文件

sed -f scripfile file 

$ cat sedscr 

s/ ma/, mass/

s/ PA/, Penn/

sed -f sedscr list 读取sedscr 中所有替换命令,并讲这些命令应用于输入文件list中的每一行;显示屏幕上是临时的,输入文件并没有发生改变。

4.保存输出 

sed -f sedscr list > newlist

5.阻止输入行的自动显示

sed 的默认操作是输出每个输入行。-选项可以阻止自动输出。当指定该选项时,

AWK基本使用

 1. awk 'instruction' file 每次从一个或多个文件中读入一行或从标准输入一行读入一行。指令必须包含在单引号中,从而与shell区别开。

2.awk -f script files -f选项的工作方式与在sed中相同

实例包含单个指令,用于打印输入文件中每行的第一个字段

awk ‘{print $1}’ list

john

alice 

3.“$1”表示每个输入行上的第一个字段的值,没有指定模式,所有打印语句应用与所有行。

awk  ‘/MA/’  list

john MA,341 King Road, Plymouth MA

Eric Adams,20 Post Road, Sudbury MA

eric MA

4.打印三列,awk更像一种查询语音,从文件中提取有用的信息。

awk ‘/MA、 { print $1 }’ list

John 

Eric 

默认情况下,awk使用空格或制表作为字段分隔符讲输入分隔成字段。

5.使用-F选项讲字段分隔符改变为逗号。使我们能够检索3个字段中的任一个:全称 街道地址 或城市和州

awk -F, ' /MA/ { print $1 }' list

John Daggett

Eric Adams

Sal Carpenter 

不要改变字段分隔符的-F选项与指定脚本文件名的-f选项弄混。

下一个示例将每个字段单独打印在这一行上。多重命令分号隔开。

awk -F, '{ print $1; print $2; print $3 }' l;ist

john Daggett

341 king Road

Plymouth MA

Alice Ford 

22 East Broadway 

出错信息

没有使用大括号({]) 讲过程括起来

没有用单引号('') 讲指令括起来

没有用斜杠(//)中将正则表达式括起来

6.选项总结

awk -f 跟随脚本的文件名

awk  -F 改变字段分隔符

-v 跟随var=value

同时使用sed和awk