我正在努力获得我喜欢的输出。
电流输出:
###Server1###
2
###Server2###
0
###Server3###
5
###Server4###
0
所需输出:
###Server1###
2
###Server3###
5
我正在寻找的只是 grep 并忽略任何行以及在该行的任何位置包含 0(零)的前一行。我正在使用 bash shell。
我正在努力获得我喜欢的输出。
电流输出:
###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
要摆脱group separator
,我们还可以这样做:
$ grep --no-group-separator -B 1 "^\s*[1-9]$" file
###Server1###
2
###Server3###
5
我认为与其使用grep -v
查找倒数,不如查找具有单个数字值的行不是0
. 这是通过表达式完成的,该"^\s*[1-9]$"
表达式允许数字前有空格。
-B 1
我们让它打印匹配的行之前的行。