linux中的文本处理工具------sed

基本语法
sed [OPTION]… {script-only-if-no-other-script} [input-file]…
默认自动打印

参数 作用
-n 不输出模式空间内容到屏幕,即不自动打印
[root@centos8 ~ ]#sed '' /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Sep 21 21:32:25 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=36500084-b1ee-4e0f-a6e5-a970a5338796 /                       xfs     defaults        0 0
UUID=ef517225-47b5-4f1d-b807-0a43d39f77b0 /boot                   ext4    defaults        1 2
UUID=ae2e39f6-476d-406e-bbae-7806cfc52d05 /data                   xfs     defaults        0 0
UUID=eac19fbe-3f3c-4f1f-804e-09458838db1c swap                    swap    defaults        0 0

[root@centos8 ~ ]#sed 'p' /etc/fstab 


#
#
# /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Sep 21 21:32:25 2020
# Created by anaconda on Mon Sep 21 21:32:25 2020
#
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
# units generated from this file.
#
#
UUID=36500084-b1ee-4e0f-a6e5-a970a5338796 /                       xfs     defaults        0 0
UUID=36500084-b1ee-4e0f-a6e5-a970a5338796 /                       xfs     defaults        0 0
UUID=ef517225-47b5-4f1d-b807-0a43d39f77b0 /boot                   ext4    defaults        1 2
UUID=ef517225-47b5-4f1d-b807-0a43d39f77b0 /boot                   ext4    defaults        1 2
UUID=ae2e39f6-476d-406e-bbae-7806cfc52d05 /data                   xfs     defaults        0 0
UUID=ae2e39f6-476d-406e-bbae-7806cfc52d05 /data                   xfs     defaults        0 0
UUID=eac19fbe-3f3c-4f1f-804e-09458838db1c swap                    swap    defaults        0 0
UUID=eac19fbe-3f3c-4f1f-804e-09458838db1c swap                    swap    defaults        0 0
[root@centos8 ~ ]#sed -n 'p' /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Sep 21 21:32:25 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=36500084-b1ee-4e0f-a6e5-a970a5338796 /                       xfs     defaults        0 0
UUID=ef517225-47b5-4f1d-b807-0a43d39f77b0 /boot                   ext4    defaults        1 2
UUID=ae2e39f6-476d-406e-bbae-7806cfc52d05 /data                   xfs     defaults        0 0
UUID=eac19fbe-3f3c-4f1f-804e-09458838db1c swap                    swap    defaults        0 0
参数 作用
-e 脚本命令 该选项会将其后跟的脚本命令添加到已有的命令中。
-f 脚本命令文件 该选项会将其后文件中的脚本命令添加到已有的命令中。
-r、-E 使用正则表达式
-i 此选项会直接修改源文件,要慎用。配合使用-i.bak,修改并备份源文件

sed脚本格式
‘地址命令’

地址格式 效果
’ ’ 不给地址,对全文进行处理
‘#p’ 打印第#行的内容
‘#,#p’ 打印从#行到#行的所有内容
‘#,+#p’ 打印从#行到+#行的所有内容
‘#,$p’ 打印从#行到行尾的所有内容
‘/part/p’ 打印所有包含/匹配内容/的行内容
‘/part1/,/part2/p’ 打印从/part1/到/part2/的所有行内容,匹配到几次,打印几次
‘#,/part/p’ 打印从第#行到第一个/part/的所有行内容
1~2 打印奇数行
2~2 打印偶数行

演示:从上到下

[root@centos8 ~ ]#sed ' ' /etc/issue
\S
Kernel \r on an \m

[root@centos8 ~ ]#seq 10 | sed -n '1p'
1
[root@centos8 ~ ]#seq 10 | sed -n '2,4p'
2
3
4
[root@centos8 ~ ]#seq 10 | sed -n '2,+4p'
2
3
4
5
6
[root@centos8 ~ ]#seq 10 | sed -n '2,$p'
2
3
4
5
6
7
8
9
10

[root@centos8 ~ ]#sed -n '/home/p' /etc/passwd
guan:x:1000:1000:guan:/home/guan:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
gentoo:x:1002:1003:Gentoo Distribution:/home/gentoo:/bin/csh
nginx:x:1003:1005::/home/nginx:/bin/bash
varnish:x:1004:1006::/home/varnish:/bin/bash
tomcat:x:1006:1008::/home/tomcat:/bin/bash
git:x:1007:1010::/home/git:/bin/bash
test2:x:1008:1011::/home/test2:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2019::/home/slackware:/bin/tcsh
wang:x:2003:2003::/home/wang:/bin/bash
li:x:2004:2004::/home/li:/bin/bash
[root@centos8 ~ ]#sed -n '2,/home/p' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
guan:x:1000:1000:guan:/home/guan:/bin/bash
[root@centos8 ~ ]#sed -n '/games/,/home/p' /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
guan:x:1000:1000:guan:/home/guan:/bin/bash

[root@centos8 ~ ]#seq 10 | sed -n '2~2p'
2
4
6
8
10
[root@centos8 ~ ]#seq 10 | sed -n '1~2p'
1
3
5
7
9
命令 作用
p 打印当前模式空间内容
Ip 忽略大小写输出
d 删除模式空间匹配的行
a 在指定行后面追加文本。\n实现多行追加
i 在指定行前面插入文本
! 模式空间中匹配行取反处理
s/pattern/pattern/(g全局,p显示提出按成功的行,w保存,i忽略大小写) 查找替换,同vim
[root@centos8 ~ ]#sed -n '/KERNEL/Ip' /etc/issue
Kernel \r on an \m
[root@centos8 ~ ]#sed -n '/Ker/Ip' /etc/issue
Kernel \r on an \m
[root@centos8 ~ ]#sed -n '/ker/Ip' /etc/issue
Kernel \r on an \m
[root@centos8 ~ ]#man sed
[root@centos8 ~ ]#sed -n '/ker/p' /etc/issue
[root@centos8 ~ ]#sed -n '/kernel/p' /etc/issue
[root@centos8 ~ ]#sed -n '/Kernel/p' /etc/issue
Kernel \r on an \m

[root@centos8 ~ ]#seq 10 | sed  '2d' 
1
3
4
5
6
7
8
9
10
[root@centos8 ~ ]#sed  '2d' num.txt 
1
3
4
5
6
7
8
9
10
[root@centos8 ~ ]#sed  '2~2d' num.txt 
1
3
5
7
9

修改网卡配置为eth格式
[root@centos8 ~ ]#sed -nr '/^GRUB_CMDLINE_LINUX/s@"$@ net.ifname=0"@p' /etc/default/grub 
GRUB_CMDLINE_LINUX="resume=UUID=eac19fbe-3f3c-4f1f-804e-09458838db1c rhgb quiet net.ifname=0"
基于centos7,8的修改网卡配置
[root@centos8 ~ ]#grub2-mkconfig -o /boot/grub2/grub.cfg 
基于ubuntu的修改网卡配置
[root@centos8 ~ ]#grub-mkconfig -o /boot/grub/grub.cfg 

猜你喜欢

转载自blog.csdn.net/weixin_50904580/article/details/109530626