SED

[root@localhost ~]# sed --help
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent
                 取消自动打印模式空间
  -e 脚本, --expression=脚本
                 添加“脚本”到程序的运行列表
  -f 脚本文件, --file=脚本文件
                 添加“脚本文件”到程序的运行列表
  --follow-symlinks
                 直接修改文件时跟随软链接
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if SUFFIX supplied)
  -c, --copy
                 use copy instead of rename when shuffling files in -i mode
  -b, --binary
                 does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (
                 open files in binary mode (CR+LFs are not treated specially))
  -l N, --line-length=N
                 指定“l”命令的换行期望长度
  --posix
                 关闭所有 GNU 扩展
  -r, --regexp-extended
                 在脚本中使用扩展正则表达式
  -s, --separate
                 将输入文件视为各个独立的文件而不是一个长的连续输入
  -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出
  -z, --null-data
                 separate lines by NUL characters
  --help
                 display this help and exit
  --version
                 output version information and exit

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.

s

[root@localhost ~]# sed 's/root/2222222222/g' /etc/passwd   #g  表示全部
2222222222:x:0:0:2222222222:/2222222222:/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:/2222222222:/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ylm:x:1000:1000:ylm:/home/ylm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
grafana:x:997:995:grafana user:/usr/share/grafana:/sbin/nologin

[root@localhost ~]# sed '/root/c"2222222"' /etc/passwd   #c 是整行
"2222222"
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
"2222222"
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ylm:x:1000:1000:ylm:/home/ylm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
grafana:x:997:995:grafana user:/usr/share/grafana:/sbin/nologin

[root@localhost ~]# sed '8c"yinshi"' /etc/passwd      #第八行
root:x:0:0:root:/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
"yinshi"
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ylm:x:1000:1000:ylm:/home/ylm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
grafana:x:997:995:grafana user:/usr/share/grafana:/sbin/nologin

p

[root@localhost ~]# sed -n '1p' /etc/passwd   #p 打印
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# cat sh.txt
1
2
3
4
5
6
7

[root@localhost ~]# sed -n '1~2p' sh.txt     # 奇数行
1
3
5
7

[root@localhost ~]# sed -n '2~2p' sh.txt    #偶数行
2
4
6

d


[root@localhost ~]# cat sh.txt
1

2
3

4
5

6
7

[root@localhost ~]# sed '/^$/d' sh.txt   # 删除空行
1
2
3
4
5
6
7


[root@localhost ~]# sed '1d' sh.txt   # 删除第几行
2
3
4
5
6
7

a

1.插入指定行

sed '3i\this is a insert line' test.txt      #插入第三行前
sed '3a\this is a append line' test.txt          #插入第三行后
sed '$a\this is last line' test.txt     #插入到最后一行
sed 'li\this is firstline' test.txt      #插入到第一行

[root@localhost ~]# sed '/^7/a"007"' sh.txt   #在7后面追加
1

2
3

4
5

6
7
"007"

i


[root@localhost ~]# sed '/^7/i"007"' sh.txt   #插入
1

2
3

4
5

6
"007"
7

w


[root@localhost ~]# sed '/^root/w aa.txt' /tmp/passwd   #w 将匹配到的行 写入文件
root:x:0:0:root:/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ylm:x:1000:1000:ylm:/home/ylm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
grafana:x:997:995:grafana user:/usr/share/grafana:/sbin/nologin
[root@localhost ~]# cat aa.txt   #查看文件
root:x:0:0:root:/root:/bin/bash


[root@localhost ~]# sed '$=' /tmp/passwd   #打印最后一行的行号
root:x:0:0:root:/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ylm:x:1000:1000:ylm:/home/ylm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
23
grafana:x:997:995:grafana user:/usr/share/grafana:/sbin/nologin

高级

n 读取下一行覆盖模式空间中的行

[root@localhost ~]# seq 4 | sed '/3/n'
1
2
3
4

N 读取下一行追加模式空间中的行

[root@localhost ~]# seq 4 | sed '/3/N'
1
2
3
4

x 把模式空间中的内容与保持空间的内容互换

[root@localhost ~]# seq 4 | sed '/3/x'
1
2

4

h 把模式空间的内容覆盖至保持空间

[root@localhost ~]# seq 4 | sed '/3/h'
1
2
3
4

H 把模式空间中的内容追加至保持空间

[root@localhost ~]# seq 4 | sed '/3/H'
1
2
3
4

g 把保持空间的内容覆盖至模式空间

[root@localhost ~]# seq 4 | sed '/3/g'
1
2

4


G 把保持空间中的内容追加至模式空间

[root@localhost ~]# seq 4 | sed '/3/G'
1
2
3

4

你可能感兴趣的:(笔记,三剑客)