* sed可以实现一些grep的功能,但是稍微麻烦了一些,sed的强项在于删除文件中的内容和替换
<强> sed实现grep检索功能:强>
1。根据关键字检索:
<代码> [root@localhost ~] # sed - n/根/p passwd。txt 代码>
* 使用sed检索时需要在关键字前加- n参数,关键字后加p,关键词还需要用//包括起来
2。关键字有特殊符号时加上- r参数或使用脱义符
<代码> [root@localhost ~] # sed nr/o + t/p passwd。txt 代码>
3。打印指定行:(打印指定行时直接写行号即可,不需要加//符号括起来)
<代码> [root@localhost ~] # sed - n ' 5 'p passwd.txt (root@localhost ~) # sed - n的5美元的p passwd。txt #打印第五行至最后一行代码>
4。- e参数:使用多个表达式:
<代码> [root@localhost ~] # sed - e ' 1 'p - e '/根/p - n passwd。txt 代码>
* 打印第一行内容并检索包含根的行,如果第一行同时包含根,那么第一行会被打印两次
5。不区分大小写:(加上大写的我)
<代码> [root@localhost ~] # sed - n/testword/Ip passwd。txt 代码>
<强> sed删除功能:强>
1。删除打印结果中指定的行:
<代码> root@localhost ~ # wc - l passwd.txt 22 passwd.txt #查看文件行数 [root@localhost ~] # sed ' 1, 20 passwd.txt chrony: x: 998:996::/var/lib/chrony:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash #删除第1行,打印剩余的行 # wc - l passwd.txt root@localhost ~ 22 passwd.txt #该操作不会真实删除文件内容,只是删除打印结果代码>
2。我参数:删除文件中指定的行(加上我参数后会真实删除文件内容)
<代码> root@localhost ~ # wc - l passwd.txt 22 passwd.txt (root@localhost ~) # sed - i ' 1, 20 passwd.txt # wc - l passwd.txt root@localhost ~ 2 passwd.txt 代码>
* 用于在删除大日志文件内容时比较常用
<强> sed替换功能:强>
1。根据关键字替换:
<代码> root@localhost ~ #猫passwd.txt chrony: x: 998:996::/var/lib/chrony:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed的s/chrony/sed_test/g passwd.txt sed_test: x: 998:996::/var/lib/sed_test:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash 代码>
* 格式:' s/被替换关键字/替换内容/g”
2。特殊符号匹配时加- r参数:
<代码> root@localhost ~ #猫passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed - r ' s/n + y/sed_test/g’passwd.txt sed_test: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash 代码>
3。分段替换位置:
<代码> root@localhost ~ #猫passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed - r ' s/([^:] +): (. *): ([^:] +)/\ 3: \ 2: \ 1/g’passwd.txt/sbin/nologin: x: 998:996::/var/lib/chronwy: nnnnny/bin/bash: x: 1000:1000::/home/linux01: linux01 代码>
* 使用冒号分割为3段,将第三段和第一段位置互换
4。配置关键词为目录路径时加上脱义符或使用其他替换符号:
<代码> root@localhost ~ #猫passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed ' s/\/bin \/bash AAAAAAA/g’passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01: AAAAAAA (root@localhost ~) # sed的#/bin/bash # AAAAAAA # g’passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01: AAAAAAA 代码>
5。删除所有字母:
<代码> root@localhost ~ #猫passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed的s/[a-zA-Z]//g passwd.txt ::998:996::///://01:1000:1000:://01://代码>
6。在每行前添加内容:
<代码> root@localhost ~ #猫passwd.txt nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin linux01: x: 1000:1000::/home/linux01:/bin/bash (root@localhost ~) # sed - r ' s/. */sed_test:和/g的passwd.txt sed_test: nnnnny: x: 998:996::/var/lib/chronwy:/sbin/nologin sed_test: linux01: x: 1000:1000::/home/linux01:/bin/bash正则sed和awk的用法