SED-常见场景汇总

常用场景汇总

行号定位

单行定位

1
ifconfig | sed -n '2p'
  • -n, --quiet, --silent, 不打印未匹配的行

连续多行定位

1
ifconfig | sed '2,4p'

这里打印 2,3,4 这几行.

指定步长定位

1
ifconfig | sed -n '1~2p'

这里从第 1 行开始, 每 2 行打印 1 行.

指定某行后 n 行定位

1
ifconfig | sed -n '2,+3p'

打印第 2 行及其后 3 行.

正则定位

普通正则

1
ifconfig | sed -n '/192/p'

扩展正则

1
ifconfig | sed -En '/[0-9]{6}/p'
  • -E, --regexp-extended

增删改查

向前插入行

在第 1 行前插入 1 行:

1
ifconfig | sed '1ihello world'

i 为 insert.

向后插入行

在第 1 行后插入行:

1
ifconfig | sed '1ahello world'

a 为 append.

删除行

不显示第 1 行:

1
ifconfig | sed '1d'

d 为 delete.

修改行

替换第一行:

1
ifconfig | sed '1cHello World'

c 为 change.

搜索替换

替换第一个匹配项

1
ifconfig | sed 's/255/11111/'

s 指 subtitute.

替换所有匹配项

1
ifconfig | sed 's/255/11111/g'

g 指 global.

自定义分隔符

如:

1
ifconfig | sed 's@RX@Receive@'

引用查找的字符串

&:

1
ifconfig | sed 's/192.168/&.177.20/'

这里 & 会被替换为 192.168.

文件操作

从文件中读取内容并用于向后插入

1
sed '1r hello.txt' world.txt

hello.txt 中读取内容, 插入到 world.txt 第一行后. 这里只会将新内容打印出, 而不会实际修改 world.txt 文件.

r 指 read.

内容另存为

1
sed '1w test.txt' targ.txt

这里将 targ.txt 的第一行保存为 test.txt.

w 指 write.

参数选项

修改源文件

1
sed -i '1c hello world, change first line' test.txt
  • -i[SUFFIX], --in-place

这里会实际对 test.txt 的第一行做修改.

执行多项动作

1
sed -e '1p' -e '1a Another motion' test.txt
  • -e, --expression

这里先打印出第一行, 接着在第一行后追加内容.

指定脚本

1
2
3
4
5
6
7
8
9
10
[root@openEuler ~]# vim ifconfig2.sed
[root@openEuler ~]# cat ifconfig2.sed
#!/bin/sed -f
1p
1a Network card configuration information
[root@openEuler ~]# sed -f ifconfig2.sed ifconfig2.txt
myifconfig2
myifconfig2
Network card configuration information
[root@openEuler ~]#

SED-常见场景汇总
http://example.com/2024/08/09/SED-常见场景汇总/
作者
Jie
发布于
2024年8月9日
许可协议