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