四剑客之sed
格式:sed [-nefri] [动作]
其中n/e/f/r/i
动作有a,i,c,p,s
-n 默认把sed命令执行的结果,与原来的数据一起输出到屏幕,如果加了-n,则只显示sed处理后的内容
sed -n ‘1p’ sed.txt
a 在匹配的当前行的后面添加内容,add
sed ‘/Simple/ahelloworld’ sed.txt world后面有符号/则会直接显示出来
i 在匹配的当前行的上面添加内容,insert
sed ‘/Beautiful/ihelloyou’ sed.txt
& 在当前行匹配字符串的行尾添加字符串
sed ‘s/than/&hellworld/’ sed.txt 则直接在than的后面添加字符串hellworld
c 把该行替换成c后面的字符串
sed ‘2,4c hello world’ sed.txt 2-4行的内容替换成hello world
s 旧字符替换新字符,行数s/旧字符串/新字符串/g
sed ‘s/than/hello/’ sed.txt
sed ‘s/than/hello/g’ sed.txt
sed ‘2s/than/hahaha/’ sed.txt 匹配第二行的
sed ‘2,4s/than/hahaha/’ sed.txt 匹配第二行到第四行的
/pa/s/pa1/pa2/ 查找包含pa的行,然后把该行的第一个匹配pa1的字符串替换为pa2
/pa/s/pa1/pa2/g 查找包含pa的行,然后把该行所有的匹配pa1的字符串替换为pa2,g即代表global
sed ‘/Beautiful/s/than/hahaha/’ sed.txt
sed ‘/Beautiful/s/than/hahahah/g’ sed.txt
sed ‘/by/s/^/hello/’ sed.txt 在包含by行的头加上hello
sed ‘/by/s/^/&hello/’ sed.txt
p 输出,默认
sed ‘1,3p’ sed.txt 显示匹配的1-3行内容和原来内容
sed -n ‘1,3p’ sed.txt 只显示匹配行的内容
sed -n ‘2p;
p
′
s
e
d
.
t
x
t
显
示
第
二
行
和
最
后
一
行
的
内
容
,
中
间
用
分
号
隔
开
,
多
行
可
以
s
e
d
−
n
′
2
p
;
3
p
;
p' sed.txt 显示第二行和最后一行的内容,中间用分号隔开,多行可以sed -n '2p;3p;
p′sed.txt显示第二行和最后一行的内容,中间用分号隔开,多行可以sed−n′2p;3p;p’ sed
d 删除
sed ‘/start/ ,/end/d’ file 删除包含第start行到第end行之间的所有行内容
sed ‘/start/, 8d’ file 删除包含第start行到第八行的内容
sed ‘1d’ sed.txt 删除第一行
sed ‘2,3d’ sed.txt 删除第二到三行
sed ‘/Simple/,$d’ sed.txt 删除匹配行到最后一行
-e 多个命令组合,对文件内容执行多条sed命令条件
sed -e ‘/Simple/s/better/worse/’ -e ‘/Flat/s/better/good/’ sed.txt
; 多个命令组合,注意引号位置
sed -e ‘/Complex/s/than/less/ ; /Flat/s/than/well/’ sed.txt
变量引用,需要先设置变量,不能用系统变量
abc=123
sed “s/Simple/$abc/g” sed.txt
-i 把sed命令修改的结果直接写入到文件里去,一般用来编辑文件内指定内容,屏幕不输出内容
如果要对所做的修改保存到原文件,则要加上-i,就会直接修改原文件内容
sed -i ‘/bash/s/bin/sbin/’ sed.txt
-f 指定执行sed脚本的文件名,可以把常用的或者是command比较长的内容写到一个文件中
vim sedcommand
s/Simple/difficult/
sed -f sedcommand sed.txt
另外可以在一个文件里填写多个条件,然后分别匹配
vim sedcommand
s/Simple/difficult/
1p
-r 支持扩展正则表达式的语法,默认是基础正则表达式