您的位置:首页 > 运维架构 > Shell

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

2017-04-09 16:48 585 查看
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中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: