我知道通过使用"-A NUM"开关,我可以在每次匹配后打印特定数量的尾随行。我只是想知道是否可以打印尾随行,直到在每次匹配后找到特定单词为止。例如,当我搜索“Word A”时,我想查看包含“Word A”的行以及它之后的行,直到包含“Word D”的行。
语境:
Word A
Word B
Word C
Word D
Word E
Word F
Run Code Online (Sandbox Code Playgroud)
命令:
grep -A10 'Word A'
Run Code Online (Sandbox Code Playgroud)
我需要这个输出:
Word A
Word B
Word C
Word D
Run Code Online (Sandbox Code Playgroud)
sae*_*edn 100
似乎您想打印 ' Word A' 和 ' Word D' (含)之间的行。我建议你使用sed而不是grep. 它允许您编辑一系列以您想要的模式开始和结束的输入流。您应该告诉sed打印范围内的所有行,而不是其他行:
sed -n -e '/Word A/,/Word D/ p' file
Run Code Online (Sandbox Code Playgroud)
小智 22
为什么不使用 awk ?
awk '/Word A/,/Word D/' filename
Run Code Online (Sandbox Code Playgroud)
小智 11
perl -lne 'print if /Word A/ .. /Word D/' file
Run Code Online (Sandbox Code Playgroud)
或者
cat file | perl -lne 'print if /Word A/ .. /Word D/'
Run Code Online (Sandbox Code Playgroud)