我正在使用一个脚本打印类似的东西:
Foo text1
Bar text2
Bar list text3
...
Foo text4
Bar text5
Bar list text6
...
我只对Foo
和Bar
行感兴趣,但对Bar list
行不感兴趣。我一直在用grep,awk或sed搜索信息,但我总是打印行Bar list text3
。有一个解决方案,包括将输出保存在文件中,然后使用sed删除行,但我想知道是否有办法在不保存文件输出的情况下执行此操作。
答案 0 :(得分:2)
头是最直接的方式。如果你想学习一些关于sed或awk的东西:
awk 'NR<3' file
或
sed '1,2!d' file
代表head
:
head -n2 file
答案 1 :(得分:1)
grep -v -F "Bar list" <filename>
使用-v
选项,grep
仅列出与该模式匹配的不行。
使用-F
选项,您告诉grep
&#34;模式&#34;根本不是一个模式,而是一个固定的字符串。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r '/^(Foo|Bar)\s+\S+\s*$/!d' file
如果它不是以Foo
或Bar
开头并且有另一个非空格模式,则删除该行。