linux常用工具—sed

一、前言

sed命令本身是一个管道命令,可以分析标准的input流,而且还可以将数据进行替换、删除、修改选取特定行等功能,我们先了解一些sed的用法,再来看看它的用途吧!

二、基本语法

sed -[参数] [动作]

  • 【参数】含义:

-n :使用安静模式,在一般sed的用法中,所有来自stand input的数据都会被列出到屏幕上,但如果加上-n参数后,则只经过sed特殊处理的那一行才会被列出来。
-e :直接在命令行模式上进行sed的动作编辑。
-f :直接将sed的动作卸载一个文件内,-f filename则可以执行finame内的sed动作。
-r :sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)。
-i :直接修改读取的文件内容,而不是由屏幕输出。

  • 【动作】说明:[n1] [,n2] function
  1. n1, n2】:不见得会使用,表示选择进行的行数,举例来说,如果我的动作再10,20行之间,则 “ 10, 20[function] ” 。
  2. function】的参数:
    a : 新增,a的后面可以跟字符串,而这些字符串将会出现在下一行
    i :插入,i的后面可以跟字符串,而这些字符串将会出现再上一行
    c:替换,c后面的以跟字符串,这些字符串会替换n1,n2之间的行!
    d:删除,d后面无需跟参数,删除n1,n2之间的行
    p:打印,打印某一个选择的数据,通常与参数-n一起使用
    s:替换,可以直接进行替换的工作,格式例如:1,20s/old/new/g

三、实际应用

  • 新增和删除
  1. 删除 /etc/passwd的第2~5行:
    nl /ect/passwd | sed '2,5d'
  2. 在第2行后加上 “what is this?” 字样:
    nl /etc/passwd | sed '2a what is this?'
  3. 在第2行前加上 “are u kidding?” 字样:
    nl /etc/passwd | sed '2i are u kidding?'
  • 行替换与显示
  1. 将2~5行的内容替换为 “ oh my god ” 字样:
    nl /etc/passwd | sed '2,5c oh my god'
  2. 仅列出文件的5~7行:
    nl /etc/passed | sed -n '5,7p'
  • 部分数据的查找和替换 (s/原来的字符串/被替换的字符串/g)

将文件中以MAN开头的数据删除:
cat /etc/man.config | grep 'MAN' | sed 's/#.*$//g | sed '/^$/d''

  • 直接修改文件内容
  1. 将test.txt文件每一行末尾的 ' . ' 换成 ' ! ' :
    sed -i 's/\.$/\!/g' test.txt
  2. 在test.txt文件的末尾加入“# this is niubility!”:
    sed -i '$a # this is niubility!' test.txt

四、结语

总之,sed命令是很不错的,很多shell script都会使用这个命令。大家有什么见解可以提出来,一起来分享一下!

你可能感兴趣的:(linux常用工具—sed)