`

SED 常用

 
阅读更多

一. 替换

  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常用用法

    多年工作实践总结Shell与Sed常用用法,都是必须要掌握的!

    linux sed 常用用法举例01

    NULL 博文链接:https://hw1287789687.iteye.com/blog/1727749

    LINUX的awk和sed的常用用法

    LINUX的awk和sed的常用用法 LINUX的awk和sed的常用用法

    sed的常用命令思维导图

    sed的常用命令大全集合,适用于小白的快速入手。

    SED单行脚本快参考

    sed 常用单行命令!

    sed用例(比较常用的例子)

    sed用例(比较常用的例子)sed用例(比较常用的例子)sed用例(比较常用的例子)

    UNIX 下SED使用全解手册

    一般 sed 最常用在编辑那些需要不断重覆某些编辑动作的文件上 , 例如将文件中的某个字串替换成另一个字 串等等。这些相较於一般 UNIX 编辑器(交谈式的, 如 vi、emacs)用手动的方式修改文件 , sed 用起来较省力。

    sed命令.docx

    sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在...

    《SED 单行脚本快速参考》

    sed 和 awk 都是 Linux 下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED 单行脚本快速参考》这文章,用 awk 做了一遍~ 至于孰好孰坏,那真是很难评论了。一般来说,sed 的命令...

    linux系统常用命令sed使用手册

    linux 常用命令sed 详细使用手册。包括用法、示范用例

    sed 使用手册linux unix 下常用的文本处理工具。用来处理格式化文本

    sed awk 使用手册,linux unix 下常用的文本处理工具。用来处理格式化文本。

    sed命令调研文档(PDF)

    sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。...在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。

    Linux Shell脚本编程--sed命令详解.zip_shell sed_命令介绍_脚本 shell

    shell编程中经常用到sed命令,本文详细介绍了shell常用命令sed详细用法

    Linux-02sed.ppt

    sed命令的常用操作:主要介绍sed命令的注释方法,打印文本,替换文本,删除文本,追加文本,插入文本,移到下一行,读写文件以及多行模式等。 组合命令:主要介绍如何在sed中组合多条命令以及如何将多条命令应用到一...

    ASPAC-SED.rar_sed

    SED是UNIX环境下常用的工具之一.本文讲解如何使用SED进行文本处理与操作.

    awk和sed思维导图

    关于unix/linus下面的常用命令awk和sed的思维导图,通过图片全面了解了命令所需参数和命令格式,以及相应的命令中自带的函数等等。

    Linux三剑客之【sed】.pdf

    Linux三剑客之sed命令:自己在平时的使用过程中总结积累的sed命令的若干种常用用法,特分享出来。 参数: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 s 表示替换,d 表示删除...

    Linux主要shell命令、sed、awk使用详解

    1 Linux主要shell命令详解 2 Linux bash shell脚本语法入门 3 Shell基本命令 4 使用 sed 编辑器

    UNIX Shell awk sed 实例 精解 (第4版)

    linux下常用脚本命令集合 : awk sed bash shell Shell范例精解(第4版)

    掌握Sed命令

    血蝙蝠小组精心总结整理的系列学习资料之一,正文总共10页左右,基本涵盖了sed实际使用中常用的内容,希望对初学者有所帮助

Global site tag (gtag.js) - Google Analytics