共计 1967 个字符,预计需要花费 5 分钟才能阅读完成。
目的
熟练使用 sed 命令完成文本处理。
sed 命令功能:sed 是一个流编辑器,实现文本的过滤和转化。
前提
可用的 centos7 系统,连接网络。
命令介绍
【例 1】利用 sed 取出 ifconfig ens33 命令中本机的 IPv4 地址
[root@Magedu ~]# ifconfig ens33 |sed -r '2!d; s@(.*inet)(.*)(netmask.*)@\2@'
172.18.118.155
【例 2】删除 /etc/fstab 文件中所有以 #开头,后面至少跟一个空白字符的行的行首的# 和空白字符
[root@Magedu ~]# sed -r 's/^#[[:blank:]]+//'g /etc/fstab
【例 3】把 /etc/httpd/conf/httpd.conf 文件内的 Linsten 80 改为 Listen 8081
[root@Magedu ~]# sed -i 's/Listen 80/Listen 8081/' /etc/httpd/conf/httpd.conf
【例 4】把 pets 文件中所有的 dog 修改为 cat
[root@magedu ~]# cat pets
1 dog
2 cat
3 dog
4 cat
[root@magedu ~]# cat pets|sed 's/dog/cat/g'
1 cat
2 cat
3 cat
4 cat
[root@magedu ~]# cat pets
1 dog
2 cat
3 dog
4 cat
注意:此处的修改仅是显示在屏幕输出了,实际文件内容并没有修改。
【例 5】删除 pets 文件中的第 2 行
[root@magedu ~]# cat pets|sed '2d'
1 dog
3 dog
4 cat
【例 6】仅显示 pets 文件的第 2 行
[root@magedu ~]# sed -n '2p' pets
2 cat
【例 7】把 pets 文件的第 2 行显示 2 遍
[root@magedu ~]# sed '2p' pets
1 dog
2 cat
2 cat
3 dog
4 cat
【例 8】显示 pets 文件的最后 1 行
[root@magedu ~]# sed -n '$p' pets
4 cat
【例 9】显示 pets 文件中包含 dog 字符串的所有的行
[root@magedu ~]# sed -n '/dog/p' pets
1 dog
3 dog
【例 10】显示 pets 文件中,包含 2 或 4 的行之间的所有行
[root@magedu ~]# sed -n '/2/,/4/p' pets
2 cat
3 dog
4 cat
【例 11】显示 pets 文件中,第 1 行到第 3 行之间的所有行
[root@magedu ~]# sed -n '1,3p' pets
1 dog
2 cat
3 dog
【例 12】显示 pets 文件中第 2 行及后面的 1 行
[root@magedu ~]# sed -n '2,+1p' pets
2 cat
3 dog
【例 13】显示 pets 文件中第 1 行和 dog 字符串之间的行
[root@magedu ~]# sed -n '1,/dog/p' pets
1 dog
2 cat
3 dog
【例 14】显示 pets 文件的奇数行
[root@magedu ~]# sed -n '1~2p' pets
1 dog
3 dog
【例 15】显示 pets 文件的奇数行
[root@magedu ~]# sed -n '2~2p' pets
2 cat
4 cat
【例 16】在 pets 文件的第 2 行的下一行添加 hello
[root@magedu ~]# sed '2ahello' pets
1 dog
2 cat
hello
3 dog
4 cat
【例 17】在 pets 文件的第 2 行的下一行添加 2 行内容为 helo 和 world
[root@magedu ~]# sed '2a\hello\nworld' pets
1 dog
2 cat
hello
world
3 dog
4 cat
【例 18】在 pets 文件的第 2 行的前一行添加 2 行内容为 helo 和 world
[root@magedu ~]# sed '2i\hello\nworld' pets
1 dog
hello
world
2 cat
3 dog
4 cat
【例 19】把 pets 文件的第 2 行替换为 hello
[root@magedu ~]# sed '2c\hello' pets
1 dog
hello
3 dog
4 cat
【例 20】把 pets 文件的第 1 - 3 行内容,另存为 test.txt 文件
[root@magedu ~]# cat pets |sed '1,3w test.txt'
1 dog
2 cat
3 dog
4 cat
[root@magedu ~]# cat test.txt
1 dog
2 cat
3 dog
【例 21】在第 2 行后读入 test.txt 文件
[root@magedu ~]# seq 1 5|sed '2r test.txt'
1
2
1 dog
2 cat
3 dog
3
4
5
【例 22】不显示第 2 行
[root@magedu ~]# seq 1 5|sed -n '2!p'
1
3
4
5
【例 23】把 pets 文件中的每行内容前都编序号显示
[root@magedu ~]# sed "=" pets
1
1 dog
2
2 cat
3
3 dog
4
4 cat
文章来源于
网络,侵删!