0%

[linux] 10.linux三剑客之 sed指令

what is sed#

  • SED是功能强大的文本流编辑器。可以进行插入,删除,搜索和替换,最常用于查找、替换。SED可以在没有打开文件的情况下就编辑文件,这效率比用vim等软件打开并替换高多了。
  • Unix中的SED命令支持正则表达式,从而可以执行复杂的模式匹配。

参数说明#

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,d 后面通常不接任何东西
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,通常 会与参数 sed -n 一起运行
  • s :替换,可以搭配正规表示法,例如 1,20s/old/new/g 就是啦!

替换#

1. 替换每行第一个字符串pattern#

1
$sed 's/unix/linux/' geekfile.txt

2. 替换每行第n个 pattern (使用/1,/2)#

1
$sed 's/unix/linux/2' geekfile.txt

3. 替换每行所有 pattern (使用/1,/2)#

1
$sed 's/unix/linux/g' geekfile.txt

4.给行内单词第一个字母加括号#

1
2
3
$ echo "Welcome To The Geek Stuff" | sed 's/\(\b[A-Z]\)/\(\1\)/g'

(W)elcome (T)o (T)he (G)eek (S)tuff

删除#

1.删除第5行#

1
$ sed '5d' filename.txt

2.删除 3到5行#

1
$ sed '3,5d' filename.txt

3.删除 行内的 abc#

1
$ sed '/abc/d' filename.txt

打印#

1. 打印4到6行#

1
[root@rhel7 ~]# sed -n '4,6'p a.txt

2. 打印从n到最后#

1
# sed -n '3,$'p a.txt

3. 打印含有特定pattern的行#

1
# sed -n /every/p a.txt

reference#

  1. SED command in Linux
  2. Linux sed 命令