Egrep-查找0(零)并忽略上一行

Egrep-查找0(零)并忽略上一行,grep,sed,Grep,Sed,我正在努力获得我喜欢的输出 电流输出: ###Server1### 2 ###Server2### 0 ###Server3### 5 ###Server4### 0 所需输出: ###Server1### 2 ###Server3### 5 我所要做的就是grep并忽略任何一行以及在该行的任何位置包含0(零)的前一行。我正在使用bash shell。这是一种可能的方法: $ grep -B 1 "^\s*[1-9]$" file ###Server1### 2

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

电流输出:

###Server1###
2
###Server2###
0
###Server3###
     5
###Server4###
     0
所需输出:

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

我所要做的就是grep并忽略任何一行以及在该行的任何位置包含0(零)的前一行。我正在使用bash shell。

这是一种可能的方法:

$ grep -B 1 "^\s*[1-9]$" file
###Server1###
2
--
###Server3###
     5
此外,我们还可以:

$ grep --no-group-separator -B 1 "^\s*[1-9]$" file
###Server1###
2
###Server3###
     5
解释 与使用
grep-v
求逆相反,我认为更容易查找单位数值不为
0
的行。这是通过
“^\s*[1-9]$”
表达式完成的,该表达式允许数字前面有空格

使用
-b1
我们还可以打印匹配行之前的行。

GNU代码:

$sed'$!N/\s*\b0\b\s*/d'文件 ###服务器1### 2. ###服务器3### 5.
awk
会更好。我认为格雷普做不到。
sed '$!N;/\s*\b0\b\s*/d' file
$ sed '$!N;/\s*\b0\b\s*/d' file ###Server1### 2 ###Server3### 5