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替换掉,就是把行首的“#”用删除。
正则表达式 ^$表示空行


 

 


shell学习之-sed用法解析

 通过例子学习sed的用法1,sed介绍    sed可删除(delete)、改变(change)、添加(append)、插入(insert)、合、交换文件中的资料行,或读入其它档的资料到文>件中,也...
  • zg_hover
  • zg_hover
  • 2007年09月28日 10:31
  • 50622

sed命令的a、c、q命令

在前面都已经知道了d、p、-n、s///g等的用法。 --------------------------------------------------- sed中,a命令是指在匹配的位置后面插...
  • imzoer
  • imzoer
  • 2013年04月07日 13:25
  • 11506

sed基本用法简介

sed是stream editor, 也就是流编辑器, 实际上就是linux中的一个命令, 作用很强大。 搞linux开发的人, 不能不熟悉该命令, 否则, 何以立足于江湖呢? 在本文中, 我们来一起...
  • stpeace
  • stpeace
  • 2015年07月07日 00:02
  • 3925

sed增加,删除,替换命令

linux系统中,我有一些文件,同时我想要在文件中特定包含字符串一行的后面添加一行新的字符窜,那么,我可以这么做sed -i ‘/检索的/a\添加的’ ./* 如果想在上方添加一行,则应该是sed ...
  • quinta2008
  • quinta2008
  • 2017年03月20日 17:37
  • 488

sed方法进行模式串匹配

背景需要从一个文件中逐行的数据中提取出符合要求的子串,比如提取其中tagA*****tagB之间的字符基于sed方式的子串提取cat my.log | sed 's/\(.*\)tagA\(.*\)...
  • ljp1919
  • ljp1919
  • 2016年11月25日 17:21
  • 1645

sed r命令使用

sed中的r命令会把其后面的任何字符判读为文件名,直到回车符或是单引号,一般对r命令的写法有下面的几种:sed /pattern/{r file1other cmd} file  # 因为这里里面使用...
  • imfinger
  • imfinger
  • 2011年06月13日 01:22
  • 4160

sed命令针对文件操作详解

Linux的简单shell脚本中修改文件操作 1.Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspa...
  • u010193457
  • u010193457
  • 2015年07月14日 11:16
  • 1613

sed语法格式

sed语法格式 1. sed ‘{定位}指令'  文件 2.命令 | sed '指令' #sed 'p' 文件    #显示文件的内容 #sed -n 'p' 文件 如何定位(man sed) ...
  • li1121567428
  • li1121567428
  • 2017年02月11日 13:34
  • 326

sed 命令全解析

sed 命令全解析  SED单行脚本快速参考(Unix 流编辑器)                       2005年12月29日 英文标题:USEFUL ONE-LINE S...
  • tcpipstack
  • tcpipstack
  • 2012年10月29日 20:11
  • 3274

sed 比较实用的(去掉windows下回车符及空白符)

利用sed 命令去掉windows下回车符及空白符windows下的回车符为 /r/n   而unix下的回车符是 /n1.去掉所有行的空格sed -i s/ //g   df.txt 2.去掉所有行...
  • shenghuiping2001
  • shenghuiping2001
  • 2009年12月07日 22:11
  • 3494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sed
举报原因:
原因补充:

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