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