Sed:在一行中打印字符串和另一个字符串之间的行

时间:2013-11-18 12:59:34

标签: sed

我在目录中有100个html文件

我需要从每个匹配正则表达式的文件中打印一行,同时打印2个正则表达式之间的行。

以下命令正确提供结果

sed -n '/string1/p' *.html >result.txt
sed -n '/string2/,/string3/p' *.html > result2.txt

但我在一个result.txt文件中需要它们,格式为

string1
string2
string3

我一直在尝试用grep,awk和sed进行搜索,但我找不到答案。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

这可能对您有用:

sed -n '/string1/p;/string2/;/string3/p' INPUTFILE > OUTPUTFILE

或者这是一个awk解决方案:

awk '/string1/ { print }
     /srting2/ { print ; p = 1 } 
     p == 1 { print }
     /string3/ { print ; p = 0 }' INPUTFILE > OUTPUTFILE

答案 1 :(得分:0)

只需将两个SAD表达式放在一个调用中:

echo $'a\nstring1\nb\nstring2\nc\nstring3\nd\n' | \
sed -n -e '/string1/p' -e '/string2/,/string3/p'

输入是:

a
string1
b
string2
c
string3
d

输出是:

string1
string2
c
string3
相关问题