我是sed
的新手,您能告诉我以下内容吗?我无法从下面的命令中找到完整的正则表达式。
sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt
我们一起有3个命令吗?
:a;N;$!ba;s
>[[:space:]]*\n
>\\\n/g
或者我没有正确地编写命令。
答案 0 :(得分:2)
命令的分区是:
:a;N;$!ba
,这是在循环中一次性将整个输入文件读入模式空间(操作缓冲区)的常用习惯用法;它由3个;
- 分隔的命令组成:
:a
(定义可以跳转到的脚本位置)N
(读取下一行并将其附加到模式空间)$! ba
,如果输入行不是(b
) last ({a
,则分支(!
)标记$
{1}})一个。 s/>[[:space:]]*\n/>\\\n/g
是s
形式的常规s/<regex>/<substitution-string>/
函数调用;在这里,所有出现的>
后跟任何空格后跟换行符都会被>\
和换行符替换。