目录
1 sed命令
-n选项的作用是只显示我们要打印的行
- 打印第5行
[root@worker1 dir9]# cp /etc/passwd ./testpasswd
[root@worker1 dir9]# sed -n '5'p testpasswd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
- 打印1-5行
[root@worker1 dir9]# sed -n '1,5'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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
- 打印全文
[root@worker1 dir9]# sed -n '1,$'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user:x:1000:1000::/home/user:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1100::/home/user2:/bin/bash
user3:x:1111:1100::/home/user3:/bin/bash
user5:x:1112:1112::/home/user5:/bin/bash
user6:x:1113:1113::/home/user6:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
- 打印匹配字符"root"的行
[root@worker1 dir9]# sed -n '/root/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
- 打印匹配字符"o+t"的行
[root@worker1 dir9]# sed -nr '/o+t/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
- 打印首行为"u"的行
[root@worker1 dir9]# sed -nr '/^u/'p testpasswd
user:x:1000:1000::/home/user:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1100::/home/user2:/bin/bash
user3:x:1111:1100::/home/user3:/bin/bash
user5:x:1112:1112::/home/user5:/bin/bash
user6:x:1113:1113::/home/user6:/bin/bash
- 打印行尾为"nologin"的行
[root@worker1 dir9]# sed -nr '/nologin$/'p testpasswd
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
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:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
- 打印匹配字符"r..o"的行
[root@worker1 dir9]# sed -nr '/r..o/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
- 打印匹配字符"oo*"的行
[root@worker1 dir9]# sed -nr '/oo*/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
- 打印第一行,匹配字符"systemd"一起执行
[root@worker1 dir9]# sed -n -e '1'p -e '/systemd/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
- 打印第一行,匹配字符"systemd",匹配字符"oo"一起执行
[root@worker1 dir9]# sed -n -e '1'p -e '/systemd/'p -e '/oo/'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
ROOT:x:0:0:roooot:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
- 参数"I"表示忽略大小写
[root@worker1 dir9]# vim testpasswd
最后一行添加
BUS123
[root@worker1 dir9]# sed -n '/bus/'p testpasswd
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@worker1 dir9]# sed -n '/bus/'Ip testpasswd
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
BUS123
- 参数-d表示删除,删除第一行
[root@worker1 dir9]# sed -n '1,3'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@worker1 dir9]# sed '1'd testpasswd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
- 删除第一行到第三行
[root@worker1 dir9]# sed -n '1,5'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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
[root@worker1 dir9]# sed '1,3'd testpasswd
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
- 删除匹配字符"oot"的行
[root@worker1 dir9]# sed -n '1,5'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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
[root@worker1 dir9]# sed '/oot/'d testpasswd
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
- 替换文中的字符"ot"改为"to"
[root@worker1 dir9]# sed -n '1,5'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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
[root@worker1 dir9]# sed 's/ot/to/g' testpasswd
ROOT:x:0:0:roooto:/roto:/bin/bash
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
替换全文中字符"ot"改为"to",替换内容末尾如果不加g,则只会替换一行中第一次出现匹配的字符,不会全部都替换
替换文中的字符"ot"改为"to",使用“#”分隔符
[root@worker1 dir9]# sed 's#ot#to#g' testpasswd
ROOT:x:0:0:roooto:/roto:/bin/bash
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
- 将全文中的数字删除,替换内容末尾如果不加g,则只会替换一行中第一次出现匹配的字符,不会全部都替换
[root@worker1 dir9]# sed 's/[0-9]//g' testpasswd
ROOT:x:::roooot:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
avahi-autoipd:x:::Avahi IPvLL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:::systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
tss:x:::Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
ntp:x::::/etc/ntp:/sbin/nologin
tcpdump:x::::/:/sbin/nologin
BUS
[root@worker1 dir9]# sed -n '1,$'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user:x:1000:1000::/home/user:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1100::/home/user2:/bin/bash
user3:x:1111:1100::/home/user3:/bin/bash
user5:x:1112:1112::/home/user5:/bin/bash
user6:x:1113:1113::/home/user6:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
BUS123
- 将全文中的字母删除
[root@worker1 dir9]# sed 's/[a-zA-Z]//g' testpasswd
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/://
::12:100:://://
::14:50: ://://
::99:99::/://
-::170:170: 4 :///-://
--::999:997: :/://
-::998:996: :/://
::81:81: :/://
::997:995: :/://
::59:59: ://://
::89:89::///://
::74:74:- :///://
::1000:1000:://://
1::1001:1001:://1://
2::1002:1100:://2://
3::1111:1100:://3://
5::1112:1112:://5://
6::1113:1113:://6://
::38:38:://://
::72:72::/://
123
- 将每行的开始段和末尾段调换
[root@worker1 dir9]# sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' testpasswd
/bin/bash:x:0:0:roooot:/root:ROOT
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:avahi-autoipd
/sbin/nologin:x:999:997:systemd Bus Proxy:/:systemd-bus-proxy
/sbin/nologin:x:998:996:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:997:995:User for polkitd:/:polkitd
/sbin/nologin:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:tss
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/bin/bash:x:1000:1000::/home/user:user
/bin/bash:x:1001:1001::/home/user1:user1
/bin/bash:x:1002:1100::/home/user2:user2
/bin/bash:x:1111:1100::/home/user3:user3
/bin/bash:x:1112:1112::/home/user5:user5
/bin/bash:x:1113:1113::/home/user6:user6
/sbin/nologin:x:38:38::/etc/ntp:ntp
/sbin/nologin:x:72:72::/:tcpdump
BUS123
[root@worker1 dir9]# sed -n '1,$'p testpasswd
ROOT:x:0:0:roooot:/root:/bin/bash
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:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
user:x:1000:1000::/home/user:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1100::/home/user2:/bin/bash
user3:x:1111:1100::/home/user3:/bin/bash
user5:x:1112:1112::/home/user5:/bin/bash
user6:x:1113:1113::/home/user6:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
BUS123
- 全文中的行前加上123前缀,&表示匹配的内容(^.*$)
[root@worker1 dir9]# sed 's/^.*$/123&/' testpasswd
123ROOT:x:0:0:roooot:/root:/bin/bash
123bin:x:1:1:bin:/bin:/sbin/nologin
123daemon:x:2:2:daemon:/sbin:/sbin/nologin
123adm:x:3:4:adm:/var/adm:/sbin/nologin
123lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
123sync:x:5:0:sync:/sbin:/bin/sync
123shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
123halt:x:7:0:halt:/sbin:/sbin/halt
123mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
123operator:x:11:0:operator:/root:/sbin/nologin
123games:x:12:100:games:/usr/games:/sbin/nologin
123ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
123nobody:x:99:99:Nobody:/:/sbin/nologin
123avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
123systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
123systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
123dbus:x:81:81:System message bus:/:/sbin/nologin
123polkitd:x:997:995:User for polkitd:/:/sbin/nologin
123tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
123postfix:x:89:89::/var/spool/postfix:/sbin/nologin
123sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
123user:x:1000:1000::/home/user:/bin/bash
123user1:x:1001:1001::/home/user1:/bin/bash
123user2:x:1002:1100::/home/user2:/bin/bash
123user3:x:1111:1100::/home/user3:/bin/bash
123user5:x:1112:1112::/home/user5:/bin/bash
123user6:x:1113:1113::/home/user6:/bin/bash
123ntp:x:38:38::/etc/ntp:/sbin/nologin
123tcpdump:x:72:72::/:/sbin/nologin
123BUS123
- 将原文件内容全文替换字符"ot"为"to"
[root@worker1 dir9]# sed -i 's/ot/to/g' testpasswd
- 在testpasswd中出现的第一个数字和最后一个单词替换位置
[root@worker1 ~]# sed -r 's#([0-9][0-9]*)([^0-9].*)([^a-zA-Z])([a-zA-Z][a-zA-Z]*$)#\4\2\3\1#' testpasswd
- 在testpasswd 中第一个数字移动到行末尾
[root@worker1 ~]# sed -r 's#([0-9][0-9]*)(.*)(.*$)#\3\2\1#' testpasswd