`

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

分享到:
评论

相关推荐

    linux sed 常用用法举例01

    本篇文章将重点介绍`sed`的一些常用用法,以帮助读者更好地理解和应用这个工具。 1. **基本语法** `sed`的基本命令格式是: ``` sed [选项] '命令' 文件 ``` 其中,`选项`通常用于设置工作模式,`命令`是你要...

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

    ### sed 常用用例详解 #### 一、显示通篇文档,除了两个正则表达式之间的内容 **命令**: `sed '/Iowa/,/Montana/d'` **解释**: 此命令会删除从匹配到 “Iowa” 开始到匹配到 “Montana” 结束之间的所有内容。...

    sed&awk;手册

    **Sed常用选项** - `-n`:抑制默认的输出,只有匹配到模式空间的行才会被打印。 - `-e`:添加多个编辑命令。 - `-i`:在原文件上进行编辑,不保留备份。 - `-f`:从文件中读取编辑指令。 **Sed/awk的特点** - **...

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

    ### sed 常用命令与应用 #### 1. 删除空行 ``` sed '/^$/d filename' ``` 这条命令会删除`filename`文件中的所有空行。 #### 2. 删除纯空白行 ``` sed '/^[[:space:]]*$/d filename' ``` 此命令用于删除文件`...

    sed命令详解 快速入门

    sed常用命令 | 命令 | 描述 | | --- | --- | | `a\文本` | 在当前行后面添加一行文本。 | | `b 标签` | 分支到脚本中带有指定标签的位置。 | | `c\新文本` | 替换当前行的文本。 | | `d` | 删除当前行。 | | `D` |...

    有关sed的运用

    #### 三、SED常用命令解析 1. **-e 脚本**:指定一个或多个SED脚本执行。 - 示例:`sed -e 's/123/1234/' a.txt` - 解析:将文件a.txt中所有出现的“123”替换为“1234”。 2. **-f 文件**:从文件中读取SED脚本...

    centOS丛书sed和awk

    **1.4 sed常用选项** - `-n`: 关闭自动输出功能,仅在命令中显式指定输出时才输出内容。 - `-r`: 使用扩展正则表达式(Extended Regular Expressions)进行模式匹配。 **1.5 sed编辑命令** - **地址**: 用于指定要...

    sed的常用命令思维导图

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

    LINUX的awk和sed的常用用法

    LINUX 的 awk 和 sed 的常用用法 awk 是一种功能强大的文本处理工具,它可以在文件或字符串中基于指定规则浏览和抽取信息。awk 语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息。 调用 awk 有三种...

    SED单行脚本快速参考 / sed1line

    以上是SED单行脚本的常用技巧,能够帮助用户快速处理文本数据,进行各种文本格式的转换,以及增加文本的可读性。SED命令的强大之处在于其灵活性和强大的文本处理能力,使得编辑操作简单高效。在Unix和类Unix系统中,...

    UNIX 下SED使用全解手册

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

    玩透sed:探究sed原理

    3. **命令替换(Command Substitution)**:`s/pattern/replacement/flags`是`sed`最常用的命令,用于替换匹配到的模式。`flags`是可选的,如`g`全局替换,`i`忽略大小写,`p`打印替换后的行。 4. **缓冲区(Buffer...

    SED1330/SED1335液晶控制器的应用

    - **内置字符发生器**:预置了常用的字符库,简化了字符显示的编程工作。 - **灵活的时序控制**:支持不同系列MPU的操作时序,提高了系统的兼容性和扩展性。 #### 四、SED1330的应用场景 鉴于SED1330的出色性能和...

    sed1520_51单片机_SED1520_badlyzgv_源码

    而SED1520是一款常用的LCD控制器,常用于驱动字符或点阵液晶显示模块。本文将围绕"sed1520_51单片机_SED1520_badlyzgv_源码"这个主题,深入解析SED1520与51单片机的交互以及badlyzgv开发的相关代码。 一、SED1520 ...

    GNU sed manual说明书

    而sed还具有一些高级命令,通常不太常用,但在处理复杂文本任务时非常有用。 GNU sed支持基本的正则表达式(BRE)和扩展的正则表达式(ERE),还提供了字符类和括号表达式等,允许用户匹配特定的文本模式。例如,...

    sed命令.docx

    **sed命令详解** **1. sed命令的基本概念** sed(stream editor)是一个强大的文本处理工具,主要用于对文本文件进行非交互式的编辑操作。它的工作方式是逐行读取输入文件,将当前处理的行存储在临时缓冲区(模式...

    SED与AWK 高清第三版

    在学习sed和awk时,了解它们的基本语法和常用命令是首要的。sed的操作主要包括插入、删除、替换、打印等,而awk则需要理解其工作模式(BEGIN、END、模式规则)、字段分隔符、内置变量和函数等概念。通过实际的案例...

    sed(windows)

    ### 常用`sed`命令 1. **替换(s)**:`s/old/new/g` 将所有出现的 "old" 替换为 "new",`g` 表示全局替换。 2. **删除(d)**:`d` 删除匹配到的行。 3. **插入(i)**:`i\text` 在匹配行之前插入文本。 4. **...

    Linux-02sed.ppt

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

Global site tag (gtag.js) - Google Analytics