grep关键字后的下一行

时间:2018-02-12 02:28:26

标签: linux command-line grep

下面有一个示例文本文件(test_long_sentence.txt),我想grep包含test1的所有行,不包括不需要的数据。

如何在报价结束前grep数据?

test_long_sentence.txt

This is some unwanted data blah blah blah

20  /test1/catergory="Food"
20  /test1/target="Adults, \"Goblins\", Elderly,
Babies, \"Witch\",
Faaries"
20  /test1/type="Western"

This is some unwanted data blah blah blah

20  /test1/theme="Halloween"

命令:

grep "test1" test_long_sentence.txt

实际输出:

20  /test1/catergory="food"
20  /test1/target="Adults, \"Goblins\", Elderly,
20  /test1/type="Western"
20  /test1/theme="Halloween"

预期产出:

20  /test1/catergory="food"
20  /test1/target="Adults, \"Goblins\", Elderly,
Babies, \"Witch\",
Faaries"
20  /test1/type="Western"
20  /test1/theme="Halloween"

Ps:我无法控制编辑test_long_sentence.txt。所以,请不要让我把它编辑成一行。

1 个答案:

答案 0 :(得分:0)

这不完美,但它可能适合你:

grep -A 1 "test1" test_long_sentence.txt | grep -E 'test1|"$'
  • grep -A 1在匹配后获取一个额外的行
  • 只有当下一行以双引号结尾时,
  • grep -E ...才会保留匹配行和下一行

它假定您要提取的文本不超过两行。