linux命令行与shell脚本大全_第十八章_初识sed和gawk

1.sed语法


例子:

(1)从stdout流中读取数据

echo "This is a test" | sed 's/test/big test/'

(2)执行多条命令,-e选项,命令用分号隔开,封号前面不能有空格

echo "This is a test" | sed -e 's/test/big test/;s/This/That/'

(3)命令和多可以采用-f选项将命令放在文件中,每一行一个命令

sed -f command.txt filename


2.gawk基本语法




gawk,可以使用多条命令,命令之间用封号分开:

例子:替换第4个字段

echo "My name is Rich" | gawk '{$4="Christine" ;print $0}'

My name is Christine


ctrl+d :产生一个eof 符,可以结束gawk命令的输入



gawk字段变量的使用:



采用-F手动指定分割符,想使用单词,或单词间有空格请用""引起来,否则会报错

gawk -F: '{print $1}' /etc/passwd



gawk读取文件中命令:



gawk:引用变量无需使用$符

gawk采用BEGIN关键字,执行处理数据之前的脚本,END关键字处理数据处理完的情形.重复使用会产生累加效果。

echo "My name is Rich" | gawk 'BEGIN{print "The gawk test"}END{print "This is end"}{$4="Christine" ;print $0}'


3.sed替换标记






4.sed的替换字符:当遇到需要转义的字符,可以用!等符号作为/的替换,甚至可以用数字,不过使用了文本中这些符号如果要使用同样要转义。。。转义数字?




4.使用地址

sed的作用范围是全体内容,有时只想操作指定内容,这样就需要指定范围。


寻址方式:




1.数字方式寻址

(1)指定行数:sed '1s/brown/blue/' sed_data.txt替换第一行

(2)指定行范围:sed '2,3s/brown/yellow/' sed_data.txt 替换2-3行

(3)使用$符号,统配到文章末尾:sed '2,$s/brown/yellow/' sed_data.txt  替换第2到文本末尾


2.使用文本模式过滤

sed '/quick1/s/brown/yellow/' sed_data.txt   过滤有quick1的文本


3.组合命令

sed '2{s/brown/bluely/ 
s/fox/dog/
}' sed_data.txt




5.删除行

(1)删除全部 :sed 'd' sed_data.txt 

(2)删除指定行:sed '2d' sed_data.txt   删除第二行

(3)删除指定范围:sed ‘2,3d’ sed_data.txt  删除第二和第三行

(4)删除指定行到末尾:sed '2,$d' sed_data.txt 删除第二到末尾

(5)通过模式进行删除:sed '/1/,/2/d' sed_data.txt 删除文本第一次出现1直到出现2结束(删除的包括2)如果没匹配到2,则会删除1后面匹配的所有行


6.插入和追加





追加命令用a:在匹配的后面加上新的一行

插入命令用 i:在匹配的前面插入一行



7.修改行


sed '3c\this is a changed line of text.' sed_data.txt    替换第3行
sed '2,3c\this is a changed line of text.' sed_data.txt  把第2和第3行替换


8.转换字符



echo "This 1 is a test of 1 try"|sed 'y/123/456/'        替换1为4


9.回顾打印






(1)sed '/hello/p' sed_data.txt         打印匹配到的hello
(2)sed -n '/hello/p' sed_data.txt   -n 禁止打印非匹配的行
(3)sed -n '/hello/l' sed_data.txt       l可以打印非可见字符
(4)sed -n '/hello/=' sed_data.txt    打印行号



10.文件操作

(1)写文件

sed '1,2w 123' sed_data.txt 写入到文件123中

(2)读文件

sed '/12/r 123' sed_data.txt 读取123文件中匹配12的到sed_data.txt中


猜你喜欢

转载自blog.csdn.net/nash885/article/details/67626469