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/'