sed

转载 2013年12月02日 14:39:04

sed可以分析标准的输入(STDIN)的数据,然后将数据经过处理后,没再将它输出到标准输出(STDOUT),他有替换,删除,新增、选取特定行等处理功能。一般情况下,使用sed对数据流进行编辑,然后输出到临时文件,当校对过临时文件的内容后,才把临时文件替换正式文件。但是在一些特殊的情况下,需要直接对文件进行修改,可以用到-i参数。使用-i参数时需谨慎确认,以免错误修改文件。

选项:
-n:使用安静模式。一般的,所有来自STDIN的数据都会显示在屏幕上,用-n后,只有经过特殊处理的那一行才能显示
-e:直接在命令模式上进行sed的操作与编辑
-f:直接将sed操作写在一个文件里,-f filename则可以执行filename内的sed操作
-r:sed的操作支持的是扩展正则表达式的语法(默认是基础正则表达式)
操作说明:[n1[,n2]]function
n1,n2:不一定存在,一般代表“选择进行操作的行数”,举例来说,如果操作需要在10到20行之间,则“ 10,20 [操作] ”
function有下面这些操作:
a:追加,a后面可以接字符串,而这些字符串会在新一行出现(当前下一行)
c:替换,c后面可以接字符串,这些字符串可以替换n1,n2之间的行
d:删除,因为是删除,所以d后面通常不接任何内容
i: 插入,i的后面可以接字符串,而这些字符串会在新的一行出现(当前的上一行)

P:打印,即打印某个选择的数据。通常P会参与sed -n一起运行
s:搜索,不但可以搜索,还可以进行替换,通常s操作与正则表达式一起使用。例:1,20s/old/new/g
例一:显示/etc/passwd的内容,并且需要打印行号,同时,将第2~5行删除
[root@linux ~]# nl /etc/passwd | sed '2,5d'     //如果删除2到最后,则:nl/etc/passwd | sed '3,$d'
例二:在第二行加上‘drink tea?’字样
[root@linux ~]# nl /etc/passwd | sed '2a drink tea?'  //如想在第二行前,则把2a变成2i即可
例三:在第二行的后面加入两行字
[root@linux ~]# nl /etc/passwd | sed '2a Drink tea or ......\
>drink beer?'                            //可以增加多行,\来进行新行的增加
例四:将2~5行的内容替换为“ No 2~5 number”
[root@linux ~]# nl /etc/passwd | sed '2,5c No 2~5 number'
例五:仅显示5~7行
[root@linux ~]# nl /etc/passwd | sed -n '5,7p'       //如不加-n,5~7行会重复出现
例六:可以使用ifconfig列出IP,若要显示eth0的IP地址
[root@linux ~]# ifconfig eth0 | grep 'inet' | sed 's/^.*addr://g' | \
>sed 's/Bcast.*$//g'
例七:在/etc/man.config文件中,将有MAN的设置取出,但不要说明内容
[root@linux ~]# cat /etc/man.config | grep 'MAN' | sed 's/#.*$//g' | \
>sed '/^$/d'

自己写的例子:
sed ‘2,5d’删除2-5行
sed ‘3d’ 删除第三行
sed ‘/^#/d’删除#开头的行(//中间的是正则表达式)
sed '/My/,/You/d' datafile删除包含"My"的行到包含"You"的行之间的行
sed -i ‘s/\.$/!/g’ re.txt把re.txt每一行用.结尾的改成!结尾。直接修改re.txt文件。
替换:sed 's/要被替换字符串/新的字符串/g'
cat /etc/man.config | sed ‘s/^#//g’找出#开头的行,并用null替换掉,就是把行首的“#”用删除。
正则表达式 ^$表示空行


 

 


显著性检测数据集SOD&SED2;

  • 2017年11月17日 10:22
  • 11.91MB
  • 下载

sed和awk(第三版)高清版

  • 2017年11月09日 22:02
  • 14.12MB
  • 下载

嵌入式 一步步学会sed编辑、截取文本信息

这一篇不错哦:http://blog.chinaunix.net/uid-12814440-id-2914740.html   先展现我自己的范例吧:   root@u12d32:/home/...
  • skdkjxy
  • skdkjxy
  • 2013年12月11日 15:31
  • 962

sed与awk手册

  • 2016年02月18日 15:29
  • 30.6MB
  • 下载

linux sed、awk、diff命令常用操作

sed常用参数 sed [-nefri]  ‘command’  输入文本/文件       [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(sil...

sed15xx系列资料

  • 2011年04月25日 11:18
  • 337KB
  • 下载

linux sed替换命令s举例

linux sed命令不会真正修改原文本,除非重定向 linux sed替换命令s sed 's/test/mytest/g' example.txt 表示将example.txt中的test文本全...

一些sed命令

  • 2012年10月12日 21:25
  • 512KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sed
举报原因:
原因补充:

(最多只允许输入30个字)