sed与awk学习笔记(一)

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

一、sed基本例子

文本内容list:

John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Moutain View CA
Sal 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/p
s/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第一列的字符串

发布了39 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sadoshi/article/details/71439934
今日推荐