我在目录中有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进行搜索,但我找不到答案。
任何帮助都将不胜感激。
答案 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