sed与awk学习笔记(一)

来源:互联网 发布:网络政治参与图片 编辑:程序博客网 时间:2024/06/08 03:19

学习参考《sed与awk》第三版

一、sed基本例子

文本内容list:

John Daggett, 341 King Road, Plymouth MAAlice Ford, 22 East Broadway, Richmond VAOrville Thomas, 11345 Oak Bridge Road, Tulsa OKTerry Kalkas, 402 Lans Road, Beaver Falls PAEric Adams, 20 Post Road, Sudbury MAHubert Sims, 328A Brook Road, Roanoke VAAmy Wilde, 334 Bayshore Pkwy, Moutain View CASal Carpenter, 73 6th Street,Boston MA


使用sed命令

sed 's/MA/Massachusetts/' list

把所有MA替换成Massachusetts

 

连接多个sed命令

sed -e 's/MA/Massachusetts/' -e 's/PA/PennsyIvania/' list

把所有MA替换成Massachusetts,PA替换成PennsyIvania

 

sed执行写好的脚本

在sedscr文件中写入

s/MA/Massachusetts/s/PA/PennsyIvania/

然后执行脚本

sed -f sedscr list

 

保存sed执行的结果

上面几个例子,使用sed之后,会把替换的结果输出的屏幕,但是源文件没有变化。如果要把输出结果保存,必须对输出进行重定向

sed -f sedscr list > newlist

 

仅输出被替换行

每次执行sed,都会把所有行输出。有时候希望仅输出被改变的行,这里要使用-n选项和命令p来进行控制,把sedscr文件修改为

s/MA/Massachusetts/ps/PA/PennsyIvania/p

然后执行命令

sed -n -f sedscr list

 

 

二、awk的基本例子

使用awk

awk '{print $1}' list

打印出list中第一列的字符串

 

awk '/MA/' list 

打印出匹配'MA'字符串的行

 

awk '/MA/ {print $1}' list

打印出匹配'MA'字符串的行的第一列

 

awk同样可以使用-f指定awk脚本文件

在脚本awkscr中编写

{print $1}

然后执行脚本

 awk -f awkscr list

可以打印list第一列的字符串

0 0
原创粉丝点击