我使用下面的命令来寻找模式跨越多行,并用一个空行替换它:
sed -n '1h; 1!H; ${ g; s/<Pattern1>\n<pattern2> //g p }' <file-name>
例如,要查找模式李四
其中包含以下条目的文件test.txt:
Mary
John
Doe
Simon
Henry
我会用下面的命令:
sed -n '1h; 1!H; ${ g; s/John\nDoe //g p }' test.txt
不过,我似乎无法使这个命令工作具有使用^ $字符第二线为空白,即模式。
因此,如果我要搜索多行的模式,玛丽之后是一个空行,我看不出有任何匹配模式。 因此,下面的命令导致没有搜索,因此没有取代。
sed -n '1h; 1!H; ${ g; s/Mary\n^$ //g p }' test.txt
有什么想法吗?
编辑
但是,如果我在一个文件中存储多个这样的命令并执行,那么第一个搜索经过精细,但是在寻找后续的模式,得到了一个空白输出sed的。
也就是说,如果我存储,sed的-n“1小时; !1小时; $ {克; S / \ n // GP} '的sed -N' 1H; !1小时; $ {克; S / \ n //在一个文件中,然后使用eval关键字执行这个文件中的每一行GP}”,则第一SED取代第一多线图案,即模式1,其次是PATTERN2,然而,它返回一个即使该文件包含这些模式的空白输出。 任何线索?