sed语法


sed : Stream editor ,逐行处理文本
行编辑器sed
全屏编辑器vi

模式空间: 默认不编辑原文件,仅对模式空间中的数据做处理;而后处理结束后将模式空间打印至屏幕

sed [options] 'AddressCommand' file...
options:
-n: 静默模式,只打印符合条件的行
Address
1、StartLine,endLine
1,100
$:最后一行 sed -n '$p' test.txt
倒数第二行 tac test.txt |sed -n 2p
2、 /RegExp/
/^root/
3、/pattern1/,/pattern2/
第一次被模式1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4、LineNum
指定的行
5、 StartLine,+N
从StartLine行开始,向后的N行

Command:
d:删除符合条件的行
例:删除前2行 sed '1,2d' /etc/fstab
删除包含oot的行 sed '/oot/d' /etc/fstab
p:显示符合条件的行
例:显示以/开头的行 sed '/^\//p' /etc/fstab (符合条件的显示了2次,不符合的显示一次)
显示以/开头的行 sed -n '/^\//p' /etc/fstab
a \string:在指定的行后面追加新行,内容为string
例:在以/开头的行后面追加# hello world sed '/^\//a \# hello world' /etc/fstab
\n换行 sed '/^\//a \# hello world\n# hello linux' /etc/fstab
i \string:在指定的行前面追加新行,内容为string
r filename:将指定文件的内容添加至符合条件的行处
例:将/etc/issue文件的内容添加在第二行后面 sed '2r /etc/issue' /etc/fstab
sed '1,2r /etc/issue' /etc/fstab
s:替换
例:把行内的所有jzk替换成jinzk,如果没有g,则只替换行内的第一个jzk ==>sed 's/jzk/jinzk/g' test1.txt
只打印发生替换的那些行 ==>sed -n 's/jzk/jinzk/p' test1.txt
在所有的jzk后面添加def(&表示匹配的内容) ==>sed 's/jzk/&def/' test1.txt
把所有的jzk替换成jinzk,并打印发生替换的那些行 ==>sed -n 's/jzk/jinzk/gp' test1.txt
把所有的jzk替换成jinzk,跟在替换s后面的字符就是查找串和替换串之间的分割字符,本例中试# ==>sed 's#jzk#jinzk#g' test1.txt

逗号:指定行的范围
例:打印模式jzk到jd的行 ==>sed -n '/jzk/,/jd/p' test1.txt
打印从第五行到包含jd行之间的行 ==>sed -n '5,/jd/p' test1.txt
修改从模式jzk到模式jd之间的行,把wyq替换成wuyaqin ==>sed -n '/jzk/,/jd/s/wyq/wuyaqin/p' test1.txt

-e:多重编辑
例:删除1-3行,然后把其余行的abc替换成def sed -e ‘1,3d’ -e ‘s/abc/def/g’ test1.txt

w:写文件
例:在包含jzk的行写入test2.txt ==>sed '/jzk/w test2.txt' test1.txt

n:读取下一行
例:读取包含jzk的行的下一行,替换jzk为jdddd ==>sed '/jzk/{n ; s/jzk/jdddd/g;}' test1.txt


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值