Sed 命令示例

Sed 是终极的流编辑器

sed 可以处理标准输入流和文件流。就是说 sed 可以处理其它命令的输出,也可以处理你创建的文件。 需要注意的是 sed 处理完的数据默认直接输出到标准输出,如果要保存文件使用重定向。基本用法:

文件空行

使一个文件中每一行都占用两行空间(就是在每一行后边插一行空行)

文件:

Screen Shot 2015-11-17 at 8.46.47 AM

输出:

Screen Shot 2015-11-17 at 8.47.34 AM

在行后边插一行空行,不同于上面的命令,这条命令执行完确保行与行只间隔一空行

Screen Shot 2015-11-17 at 8.55.56 AM

使一个文件中每一行都占用三行空间(就是在每一行后边插两行空行)

撤销双空行(假设偶数行总是空行)

在匹配regex的行上面插入空行

在匹配regex的行下插入空行

在匹配regex的行上下插入空行

数字

列出行号

Screen Shot 2015-11-17 at 9.07.14 AM

也是列出行号

列出行号(空行)

Screen Shot 2015-11-17 at 9.10.57 AM

统计行数(类似“wc -l”)

文本转换和替换

在Unix环境:转换DOS行(CR/LF)为 Unix 格式

  • 假设所有行以CR/LF结尾
  • 在 bash/tcsh
  •  ssed, gsed 3.02.80或更高

    在Unix环境:转换Unix (LF) 为 DOS 格式

  • ksh
  • bash
  •  zsh
  • gsed 3.02.80或更高

    删除每一行前的空白字符(空格,Tab)

    删除每一行后的空白字符(空格,Tab)

    删除每一行前后的空白字符(空格,Tab)

    在每一行前插入5个空格

    在每一行查找‘foo’替换为‘bar’

  • 每一行替换1个
  • 每一行替换4个
  • 替换所有

    倒序输出每一行字符

    Screen Shot 2015-11-17 at 9.32.44 AM

合并一行

Screen Shot 2015-11-17 at 9.35.40 AM

如果文件以反斜杠()结尾,把下一行移到本行

如果一行以=开始,把这行移到上一行并把=替换为空格

在数字中加入逗号如 1234567 -> 1,234,567

每五行插入一个空行

有选择的输出指定行

输出文件第5-10行

输出文件除5-10行外的其他行

查看不连续的行

输出前3行(类似“head”)

输出后3行(类似”tail”)

打印匹配正则表达时的行(类似“grep”)

grep -v

打印正则式的前一行

打印正则式的后一行

打印正则式的前后各一行(grep -A1 -B1)

grep AAA and BBB and CCC(无序)

grep AAA and BBB and CCC(有序)

grep for AAA or BBB or CCC (egrep)

输出>=65字符的行

输出<65字符的行

打印正则表达式到文件尾

打印指定行(用行号)

 从第3行开始,每7行输出一次

删除指定行

删除连续重复行(uniq命令)

删除不连续重复行

删除除了重复行的所有行(uniq -d命令)

删除前10行

删除文件最后1行

删除文件最后2行

删除文件最后10行

每隔8行删一行

删除匹配pattern的行

删除所有空行(“grep ‘.’ “)

删除所有在文件头的空行

删除所有在文件尾的空行

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注