下面有一个示例文本文件(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。所以,请不要让我把它编辑成一行。
答案 0 :(得分:0)
这不完美,但它可能适合你:
grep -A 1 "test1" test_long_sentence.txt | grep -E 'test1|"$'
grep -A 1
在匹配后获取一个额外的行grep -E ...
才会保留匹配行和下一行它假定您要提取的文本不超过两行。