ubuntu下sed命令详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ubuntu下sed命令详解
在我写这篇blog之前还有点犹豫,因为像这么著名的命令,sed和awk应该在很多书籍⾥都有介绍,但是在⽹上找时,却是寥寥⽆⼏...
sed简介
sed是⼀种⾮交互式的流编辑器,可动态编辑⽂件。

所谓⾮交互式是说,sed和传统的⽂本编辑器不同,并⾮和使⽤者直接互动,sed处理的对象是⽂件的数据流(称为stream/流)。

sed的⼯作模式是,⽐对每⼀数据⾏,若符合样式,就执⾏指定的操作。

sed --version //查看sed版本
sed语法
sed '操作命令' 操作对象
特别注意:sed并不会更改⽂件内容。

sed的⼯作⽅式是读取⽂件内容,经流编辑之后,把结果显⽰到标准输出。

因此,如果想要存储sed的处理结果,得⾃⾏运⽤转向输出将结果存成其他⽂件。

sed实例
⽤法1:删除某⼀段范围的数据⾏
sed '1,4d' test.txt
// 把第1到第4⾏数据删除,剩下的显⽰出来。

d是sed的删除命令
⽤法2:把含有"La"的数据⾏删除。

sed '/La/d' test.txt
// 把含有La的⾏删除,剩下的显⽰出来。

其中,/ / 代表搜索之意。

⽤法3:使⽤正则匹配
sed '/[0-9]\{3\}/d' test.txt
// 把含有"3位数"的⾏删除,剩下的显⽰出来,在样式[0-9]\{3\}中,\{3\} 表/ /要寻找的是3个数字组成的字符串⽤法4:删除空⾏
sed '/^$/d' test.txt
//删除dataf5的空⽩⾏。

^ 表开头,$ 表尾部,这两者之间没有任何字符,代表该⾏是⼀空⽩⾏。

⽤法5:反向选择
sed '/La/!d' test.txt
//把不含有La的⾏删除,剩下的显⽰出来,这⾥的!是否定的意思,表⽰不符合样式者
⽤法6:把含有"样式"的数据⾏显⽰出来
sed '/La/p' test.txt
//⽤途把含有La的⾏显⽰出来。

其中,p是sed的命令,它会把⽬前的数据显⽰出来,但因为sed默认也会显⽰不符合的数据⾏,所以,应改⽤以下指令:
sed -n '/La/p' test.txt
//选项-n会抑制sed显⽰出其他资料⾏的默认操作,只显⽰符合样式的数据⾏。

⽤法7:替换
sed -n 's/La/Oo/p' test.txt
//这⾥的s是取代的意思,第⼀对//中含括的字符串(La)是搜索的⽬标,第⼆对//含括的是置换的字符串(Oo)。

它会把数据⾏中的字符串La换成Oo。

注意:上⾯这个指令,只会更换第⼀个出现的La⽽已,如要全部置换,应再加上全局的命令g
sed -n 's/La/Oo/gp' test.txt
⽤法8:替换/删除字符
sed -n 's/La//p' test.txt
//把每⼀⾏出现的第⼀个La删除(把La置换成空字符串,就是删除)
⽤法9:替换/通配符
sed 's/^...//' test.txt //把每⼀⾏开头的3个字符删除。

sed 's/...$//' test.txt //把每⼀⾏末尾3个字符删除
其他⽤法:
1. sed -n '/AAA/s/234/567/p' test.txt
//找到含有AAA的那⼀⾏之后,将234换成567
2.sed -n '/AAA/,/DDD/s/B/567/p' test.txt
//将含有AAA到含有DDD的那⼏⾏,皆将其中的B换成567
3.sed -n '2,4s/B/567/p' test.txt
//从第2⾏到第4⾏,皆将其中的B换成567
4.sed G test.txt
//在每⼀⾏后⾯增加⼀空⾏
5.sed '/^$/d;G' test.txt
//将原来的所有空⾏删除并在每⼀⾏后⾯增加⼀空⾏,这样在输出的⽂本中每⼀⾏后⾯将有且只有⼀空⾏ 6.sed 'G;G' test.txt
//在每⼀⾏后⾯增加两⾏空⾏
7.sed '/regex/{x;p;x;}' test.txt
//在匹配式样“regex”的⾏之前插⼊⼀空⾏
8.sed '/regex/G'
//在匹配式样“regex”的⾏之后插⼊⼀空⾏
9.sed 10q
//显⽰⽂件中的前10⾏
10.sed q
//显⽰⽂件中的第⼀⾏
……
另外,我今天见到sed -i 的⽤法
这⾥sed命令的-i选项,表⽰直接操作⽂件ab.file。

这⾥是⽂本替换操作,将⽂件中的所有a都替换为b。

默认情况下,sed 是不会修改⽂件的,只会将操作结果打印到标准输出(屏幕)。

相关文档
最新文档