首页 > 其他 > 详细

sed

时间:2019-03-26 00:58:22      阅读:241      评论:0      收藏:0      [点我收藏+]

sed选项: -n 不输出模式空间内容到屏幕,不自动打印 -e 多点编辑 -p 打印 -f 从指定文件读取 -r 正则 -i.bak 备份

地址定界:指定打印多少行

默认自动打印 [root@node1 sed]# sed ‘2p‘ /etc/issue \S Kernel \r on an \m Kernel \r on an \m

正则匹配:支持正则表达式

1.以U开头的行

[root@node1 sed]# sed -n ‘/^U/p‘ /etc/fstab UUID=a380558e-07c0-4abe-a0b6-9a0d038e86fd /boot     xfs     defaults       0 0

?2.最后一行

[root@node1 sed]# sed -n ‘$p‘ /etc/fstab   /dev/mapper/centos-swap swap         swap   defaults       0 0

?

3.打印2,3行

[root@node1 sed]# sed -n ‘2,3p‘ /etc/fstab UUID=a380558e-07c0-4abe-a0b6-9a0d038e86fd /boot       xfs     defaults       0 0 /dev/mapper/centos-swap swap                   swap   defaults       0 0

?

4.打印1行之后的1行

[root@node1 sed]# sed -n ‘1,+1p‘ /etc/fstab /dev/mapper/centos-root /       xfs     defaults       0 0 UUID=a380558e-07c0-4abe-a0b6-9a0d038e86fd /boot       xfs     defaults       0 0

?

1~2p 奇数行

2~2p 偶数行

?

-d 删除

1.删除第一行

  [root@node1 sed]# cat /etc/issue |sed ‘1d‘       Kernel \r on an \m

?

2./dev/sd开头的行

  [root@node1 sed]# df |sed -n ‘/^\/dev\/sd/p‘       /dev/sda1               1038336 145088   893248   14% /boot

?

-a追加

    df |sed ‘1,2a\ ====‘ 追加       文件系统             ====       /dev/mapper/centos-root 28289540 4704928 23584612   17% /         ====

-i 插入

1.在1行后插入内容并自动备份之前的内容

[root@node1 sed]# sed -i.bak ‘1a "cd /tmp"‘ test [root@node1 sed]# cat test 8 "cd /tmp" [root@node1 sed]# ls test test.bak

?

c替换

[root@node1 sed]# sed ‘/^"/c 插入‘ test

?

w写入,从test.bak匹配写入到test1

[root@node1 sed]# sed ‘/^1/w test1‘ test.bak [root@node1 sed]# cat test1 1 10

r读入,从文件test1读入,符合条件的放到test.bak后面

[root@node1 sed]# sed ‘/^1/r test1‘ test.bak 1 1 10

?

!取反 去除u开头的行

[root@node1 sed]# sed -n ‘/^U/!p‘ /etc/fstab /dev/mapper/centos-root /                       xfs     defaults       0 0 /dev/mapper/centos-swap swap                   swap   defaults       0 0 [root@node1 sed]# sed -r ‘s@(123)@345\1@‘ test 345123456 11111 345123

截取ip地址

[root@node1 sed]# ifconfig ens33 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500   inet 192.168.146.128 netmask 255.255.255.0 broadcast 192.168.146.255

?

[root@node1 sed]# ifconfig ens33 |sed -n ‘2p‘ |sed ‘s@.*inet@@‘ |sed ‘s@netmask.*@@‘ 192.168.146.128  

?

[root@node1 sed]# ifconfig ens33|sed -n ‘2p‘ |sed -rn ‘s@.*inet (.*) netmask.* @\1@p‘ 192.168.146.128  

删除不要的使用分组来显示 [root@node1 sed]# ifconfig ens33|sed -rn ‘2s@.*inet (.*) netmask.*@\1@p‘ 192.168.146.128

?

[root@node1 sed]# ifconfig ens33 | sed -r ‘2!d;s/.*inet //;s/netmask.*//‘ 192.168.146.128  

?

获取os版本号

[root@node1 sed]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) [root@node1 sed]# sed -rn ‘s/^.*release ([^.]+) .* /\1/p‘ /etc/centos-release 7 [root@node1 sed]# sed -rn ‘s/(quiet)/\1xxx/p‘ /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quietxxx" ?

.*/出现任意字符,(.+)任意字符 2个分组 分组1目录 分组2基名 [root@node1 sed]# echo ‘/etc/fstab/‘ |sed -rn ‘s@(.*/)(.+)/?@\2@p‘ fstab/

?

删除空白行

[root@node1 sed]# sed ‘/^$/d‘ /etc/issue \S Kernel \r on an \m

?

sed -r ‘/x/,/x/s/y/2/‘ /etc/issue

?

偶数行 [root@node1 sed]# seq 1 10 |sed -n ‘n;p‘ 2 4

[root@node1 sed]# ls /misc/cd/Packages/*.rpm |rev|cut -d. -f2 |rev |sort |uniq -c 2223 i686 3117 noarch 4571 x86_64 [root@node1 sed]# ls /misc/cd/Packages/*.rpm |sed -r ‘s@.*\.(.+)\.rpm$@\1@‘ |sort |uniq -c 2223 i686 3117 noarch 4571 x86_64

sed

原文:https://www.cnblogs.com/lzchome/p/10597573.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!