您的位置:首页 > 运维架构 > Linux

linux sed命令使用

2015-10-21 15:36 417 查看
 # sed [-nefr] [动作]  基本格式是这样的。

其中的参数:

     -n :使用安静模式,在一般的sed的用户中,所有来自stdin 的数据一本都会被列出在屏幕中,但如果加上-n 后,则只有经过sed 特殊处理的那一行才会被列出来。

    -e:直接在命令行模式上进行sed的动作编辑。

    -f :直接将sed的动作写在一个文件内,- f filename 则可以执行filename 内的sed 动作。

    -r :sed的动作支持的是扩展型正在表达式的语法。

    -i :直接修改读取的文件内容,而不是有屏幕输出。

动作说明:[n1,[n2]] function

n1 ,n2 :不见得存在,一般代表选择进行的动作的行数。

function:

    a: 新增,a 的后面可以接字符串,而这些字符串会在新的一行出现。

    c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2 之间的行。

      d:  删除,因为是删除,所有后面不接任何参数。

    i :插入,i的后面可以直接接字符串,字符串会出现在新的一行。

    p: 打印,也就是将某个选择的数据打印出来。 通常p会与参数-n 一起使用。

   s: 替换,可以直接进行替换工作。通常这个s的动作可以搭配,例如: 1,20s/old/new/g 

以行单位删除或新增:例如

nl /etc/passwd | sed '2,5d'

nl /etc/passwd | sed '2a drink tea'

在第二行前加上一行drink tea  :nl /etc/passwd | sed '2i drink tea'

新增很多行 直接一点要 \ 来进行新增。

在第二行后加上多行字符串  :nl /etc/passwd | sed '2i drink tea..... \> drink teer ?'  新增  drink tea..... 和 drink teer ?

以行为单位替换:

nl  /etc/passwd |sed ' 2,5c No 2-5 number'      2-5行的内容替换成 N0 2-5 number

想列出那几行: nl  /etc/passwd |sed  -n '5,7p'     5到7行

sed 's /要替换的字符串 /新的字符串/g'

cat /etc/man.config |grep 'man'

cat /etc/man.config |grep 'man' |sed 's /#.*$//g'

cat /etc/man.config |grep 'man' |sed 's /#.*$//g' |\ >sed '/^$/d'  删除空格
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: