Egrep - 找到0(零)并忽略前一行

时间:2013-07-24 11:09:54

标签: grep

我正在努力获得我喜欢的输出。

当前输出:

###Server1###
2
###Server2###
0
###Server3###
     5
###Server4###
     0

必需输出:

###Server1###
2
###Server3###
     5

我正在寻找的是grep并忽略任何行和前一行在行的任何位置包含0(零)的行。我正在使用bash shell。

2 个答案:

答案 0 :(得分:0)

这是一种可行的方法:

$ grep -B 1 "^\s*[1-9]$" file
###Server1###
2
--
###Server3###
     5

get rid of the group separator,我们也可以这样做:

$ grep --no-group-separator -B 1 "^\s*[1-9]$" file
###Server1###
2
###Server3###
     5

解释

我认为查找单个数字值不是grep -v的行更容易,而不是使用0来查找反转。这是通过"^\s*[1-9]$"表达式完成的,该表达式允许数字前的空格。

使用-B 1,我们也会在匹配的行之前打印它。

答案 1 :(得分:0)

GNU代码

sed '$!N;/\s*\b0\b\s*/d' file
$ sed '$!N;/\s*\b0\b\s*/d' file
###Server1###
2
###Server3###
     5