了解Sed脚本如何分解为单个命令

时间:2017-06-07 18:11:44

标签: linux sed command-line

我是sed的新手,您能告诉我以下内容吗?我无法从下面的命令中找到完整的正则表达式。

sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt

我们一起有3个命令吗?

:a;N;$!ba;s

>[[:space:]]*\n

>\\\n/g

或者我没有正确地编写命令。

1 个答案:

答案 0 :(得分:2)

命令的分区是:

  • :a;N;$!ba,这是在循环中一次性将整个输入文件读入模式空间(操作缓冲区)的常用习惯用法;它由3个; - 分隔的命令组成:

    • label :a(定义可以跳转到的脚本位置)
    • function N(读取下一行并将其附加到模式空间)
    • $! ba,如果输入行不是(b last ({a,则分支(!)标记$ {1}})一个。
  • s/>[[:space:]]*\n/>\\\n/gs形式的常规s/<regex>/<substitution-string>/函数调用;在这里,所有出现的>后跟任何空格后跟换行符都会被>\和换行符替换。