有人可以建议我一种方法,我可以在阅读时提取几行文字。
文件样本结构:
A blah blah string1
B blah blah
C blah string2
D blah string3 blah
E blah blah
F blah string2
G blah string3 blah
H blah blah string1
I blah blah
J blah string2
这里我想提取以字符串" string1"开头的行。跟随/结束" string2" 实际上,我想要上面例子中的A-C和H-J行。
我的实验失败了,我想忽略F行。
答案 0 :(得分:1)
Perl one liner和Flip-flop Operator ..
:
$ perl -ne 'print if /\bstring1\b/ .. /\bstring2\b/' file
A blah blah string1
B blah blah
C blah string2
H blah blah string1
I blah blah
J blah string2
上述正则表达式中的 \b
称为字边界。它匹配单词characetr和非单词字符。
来自Perl --help
-n assume "while (<>) { ... }" loop around program
-e program one line of program (several -e's allowed, omit programfile)
答案 1 :(得分:0)
这也可以在awk
和sed
中通过指明您要打印行的模式来完成:
sed -n '/string1/,/string2/p' file
awk '/string1/,/string2/' file
在Perl
中,您可以说:
perl -e 'while (<>){print if (/string1/../string2/);}' file
相当于
perl -ne '{print if (/string1/../string2/)}' file
^
所有人都回来了:
A blah blah string1
B blah blah
C blah string2
H blah blah string1
I blah blah
J blah string2