如何避免在bash中打印一行

时间:2016-03-08 08:18:42

标签: bash awk sed

我正在使用一个脚本打印类似的东西:

Foo text1
Bar text2
Bar list text3
...
Foo text4
Bar text5
Bar list text6
...

我只对FooBar行感兴趣,但对Bar list行不感兴趣。我一直在用grep,awk或sed搜索信息,但我总是打印行Bar list text3。有一个解决方案,包括将输出保存在文件中,然后使用sed删除行,但我想知道是否有办法在不保存文件输出的情况下执行此操作。

3 个答案:

答案 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

如果它不是以FooBar开头并且有另一个非空格模式,则删除该行。