Linux-sed

2023-11-06  本文已影响0人  ssttIsme

1.使用s命令进行文本替换操作

srcStr要替换的文本,dstStr目标文本

sed 's/srcStr/dstStr/' /file
sed 's/root/ROOT/' /etc/passwd

2.可以指定其他字符作为分隔符(可以使用替换标记g替换每行中所有匹配的地方)

sed 's!root!ROOT!' /etc/passwd
sed 's#3#7#g' file

3.数字指明替换第几次匹配到的文本

sed 's/root/ROOT/2' /etc/passwd

4.g替换所有匹配到的文本

sed 's/root/ROOT/g' /etc/passwd

5.p打印与替换命令中指定模式(srcStr)相匹配的行

sed 's/root/ROOT/p' /etc/passwd

只输出被匹配替换过的行

sed -n 's/root/ROOT/gp' /etc/passwd

6.w file将替换的结果写入文件中

sed -n 's/root/ROOT/g w change.txt' /etc/passwd

7.正则匹配

sed -r 's/^west/north/' file

8.使用数字方式进行寻址

# 将第3行中所有bin替换成BIN
sed '3 s/bin/BIN/g' /etc/passwd
# 将第2到第5行中所有bin替换成BIN
sed '2,5 s/bin/BIN/g' /etc/passwd
# 将第10到最后一行中所有bin替换成BIN
sed '10,$ s/bin/BIN/g' /etc/passwd

9.使用文本模式过滤行

sed -rn '/^root/ s/bin/BIN/g' /etc/passwd
sed -n '/root,/login/  s/bin/BIN/g' /etc/passwd

10.删除行

#删除匹配root的行
sed '/root/d' /etc/passwd
#删除第2行到最后一行
sed '2,$d' /etc/passwd 

11.插入和附加文本

#在每一行的上面增加文本
sed 'i\Insert every line' /etc/passwd
#在第一行钱增加一个新行
sed '1i\Insert first line' /etc/passwd
#在第三行前增加一个新行
sed '3a\Append third line' /etc/passwd
#最后一行增加一个新行
sed '$a\Append last line' /etc/passwd

12.修改行

#替换第三行
sed '3 c\New text' /etc/passwd
#替换匹配root的行
sed '/root/ c\New text' /etc/passwd
#替换第2行到第4行的内容为一行文本New text
sed '2,4c\New text' /etc/passwd

13.逐字转换

echo abcdefghicdsbca |sed 'y/acg/ACG/'
上一篇下一篇

猜你喜欢

热点阅读