一. 替换
1.神奇变换(y命令的使用)
代码:
sed 'y/ori_letter_list/target_letter_list/' filename
代码:
cat filename
1234567890
2345678901
3456789012
4567890123
测试
将文件中1换成A
将文件中2换成B
...
将文件中0换成J
代码:
sed 'y/1234567890/ABCDEFGHIJ/' filename
ABCDEFGHIJ
BCDEFGHIJA
CDEFGHIJAB
DEFGHIJABC
注意变换关系是按两个list的位置对应变换,y是一个管局命令,拒绝使用后缀flag/g
list1:1234567890
list2:ABCDEFGHIJ
下面再作一个与前例相反的变换
代码:
sed 'y/0987654321/ABCDEFGHIJ/' filename
JIHGFEDCBA
IHGFEDCBAJ
HGFEDCBAJI
GFEDCBAJIH
2.替换每行第一个匹配
代码:
sed 's/regexpr/anyword/' filename
sed 's/regexpr/anyword/1' filename
举例:
引用:
cat filename
1234567890 2345678901
3456789012 4567890123
sed 's/5/五/' filename
1234五67890 2345678901
34五6789012 4567890123
3.替换每行第n(如果有的话)个匹配
代码:
sed "s/regexpr/anyword/${n}" filename
cat filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
举例
sed "s/4/ 四 /8" filename
111111111111111111
222222222222222222
333333333333333333
4444444 四 4444444444
4.替换每行所有匹配
代码:
cat filename
1234567890 2345678901
3456789012 4567890123
代码:
举例:
sed 's/3/三/g' filename
12三4567890 2三45678901
三456789012 456789012三
二.行号处理
1.为文件加行号
代码:
sed = filename|sed 'N;s/\\n/:/'
cat filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
举例
代码:
sed = filename|sed 'N;s/\\n/:/' filename
1:111111111111111111
2:222222222222222222
3:333333333333333333
4:444444444444444444
2.仅为文件中的正文行加行号
代码:
sed /./= a|sed '/./N;s/\\n/:/'
举例
代码:
cat filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
sed /./= a|sed '/./N;s/\\n/:/' filename
1:111111111111111111
3:222222222222222222
4:333333333333333333
6:444444444444444444
三.字串翻转
代码:
sed '/\\n/!G;s/\\(.\\)\\(.*\\n\\)/&\\2\\1/;s/.//'
举例
代码:
echo 1234567890|sed '/\\n/!G;s/\\(.\\)\\(.*\\n\\)/&\\2\\1/;s/.//'
0987654321
四.选择性输出
1.打印文档奇数行(隔行输出)
代码:
sed 'n;d'
sed 'x;$!N;x'
sed -n 'p;n'
1
3
5
7
2.打印偶数行(隔行输出)
代码:
sed -n 'n;p'
sed '1d;n;d;'
2
4
6
8
3.删除连续重复行(大量使用了pattern space 文件太大时要注意)
代码:
sed '$!N; /^\\(.*\\)\\n\\1$/!P; D'
#使用 $!N 要当心内存溢出
举例
代码:
cat file
111111111111111111
222222222222222222
222222222222222222
333333333333333333
444444444444444444
444444444444444444
444444444444444444
444444444444444444
444444444444444444
sed '$!N; /^\\(.*\\)\\n\\1$/!P; D' filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
4.合并上下行并以空格相分隔
代码:
sed '$!N;s/\\n/ /'
举例
代码:
cat file
1234567890
0987654321
执行命令后
1234567890 0987654321
5.将以\\符号结尾的行与下行合并并以空格分隔(拼接断行)
代码:
sed -e :a -e '/\\\\$/N; s/\\\\\\n/ /; ta'
举例
代码:
cat filename
1 111111111111111111\\
2 222222222222222222
3 333333333333333333\\
4 444444444444444444
sed -e :a -e '/\\\\$/N; s/\\\\\\n/ /; ta' filename
1 111111111111111111 2 222222222222222222
3 333333333333333333 4 444444444444444444
6.按关键字拼接行
如果某行以=开始,则合并到上一行并替代=为空格
代码:
sed -e :a -e '$!N;s/\\n=/ /;ta' -e 'P;D'
举例
代码:
cat file
111111111111111111
222222222222222222
=333333333333333333
444444444444444444
sed -e :a -e '$!N;s/\\n=/ /;ta' -e 'P;D' filename
111111111111111111
222222222222222222 333333333333333333
444444444444444444
7.输出匹配行的下一行
代码:
sed -n '/regexpr/{n;p;}' filename
举例
代码:
cat filename
1 111111111111111111
2 222222222222222222
3 333333333333333333
4 444444444444444444
sed -n '/^3/{n;p;}' filename
4 444444444444444444
8.显示匹配行的行号并输出匹配行的上行、匹配行、下行
sed -n -e '/regexpr/{=;x;1!p;g;$!N;p;D;}' -e h
举例
代码:
cat filename
1 111111111111111111
2 222222222222222222
3 333333333333333333
4 444444444444444444
sed -n -e '/^3/{=;x;1!p;g;$!N;p;D;}' -e h filename
3 #匹配行的行号
2 222222222222222222 #上一行
3 333333333333333333 #匹配行
4 444444444444444444 #下一行
9.删除文档中某标志区域内的关键字匹配行
删除文档中从being开到end结束的块中包含myword的行
代码:
sed '/^begin/,/^end/{/myword/d;}' filename
引用:
cat filename
myword
begin
myword
Number!
myword
Number!
myword
Number!
myword
Number!
end
myword
Number!
测试
引用:
myword
begin
Number!
Number!
Number!
Number!
end
myword
Number!
五.字串解析
1.从字串中解析出两个子串(前2各字符和后9个字符)
代码:
echo "WeLoveChinaUnix"|sed -e 'H;s/\\(..\\).*/\\1/;x;s/.*\\(.\\{9\\}\\)$/\\1/;x;G;s/\\n/ /'
We ChinaUnix
2.分解日期串
代码:
echo 20030922|sed 's/\\(....\\)\\(..\\)\\(..\\)/\\1 \\2 \\3/'|read year month day
echo $year $month $day
2003 09 22
分享到:
相关推荐
多年工作实践总结Shell与Sed常用用法,都是必须要掌握的!
NULL 博文链接:https://hw1287789687.iteye.com/blog/1727749
LINUX的awk和sed的常用用法 LINUX的awk和sed的常用用法
sed的常用命令大全集合,适用于小白的快速入手。
sed 常用单行命令!
sed用例(比较常用的例子)sed用例(比较常用的例子)sed用例(比较常用的例子)
一般 sed 最常用在编辑那些需要不断重覆某些编辑动作的文件上 , 例如将文件中的某个字串替换成另一个字 串等等。这些相较於一般 UNIX 编辑器(交谈式的, 如 vi、emacs)用手动的方式修改文件 , sed 用起来较省力。
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在...
sed 和 awk 都是 Linux 下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED 单行脚本快速参考》这文章,用 awk 做了一遍~ 至于孰好孰坏,那真是很难评论了。一般来说,sed 的命令...
linux 常用命令sed 详细使用手册。包括用法、示范用例
sed awk 使用手册,linux unix 下常用的文本处理工具。用来处理格式化文本。
sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。...在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。
shell编程中经常用到sed命令,本文详细介绍了shell常用命令sed详细用法
sed命令的常用操作:主要介绍sed命令的注释方法,打印文本,替换文本,删除文本,追加文本,插入文本,移到下一行,读写文件以及多行模式等。 组合命令:主要介绍如何在sed中组合多条命令以及如何将多条命令应用到一...
SED是UNIX环境下常用的工具之一.本文讲解如何使用SED进行文本处理与操作.
关于unix/linus下面的常用命令awk和sed的思维导图,通过图片全面了解了命令所需参数和命令格式,以及相应的命令中自带的函数等等。
Linux三剑客之sed命令:自己在平时的使用过程中总结积累的sed命令的若干种常用用法,特分享出来。 参数: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 s 表示替换,d 表示删除...
1 Linux主要shell命令详解 2 Linux bash shell脚本语法入门 3 Shell基本命令 4 使用 sed 编辑器
linux下常用脚本命令集合 : awk sed bash shell Shell范例精解(第4版)
血蝙蝠小组精心总结整理的系列学习资料之一,正文总共10页左右,基本涵盖了sed实际使用中常用的内容,希望对初学者有所帮助