我正在努力获得我喜欢的输出。
当前输出:
###Server1###
2
###Server2###
0
###Server3###
5
###Server4###
0
必需输出:
###Server1###
2
###Server3###
5
我正在寻找的是grep并忽略任何行和前一行在行的任何位置包含0(零)的行。我正在使用bash shell。
答案 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:
sed '$!N;/\s*\b0\b\s*/d' file
$ sed '$!N;/\s*\b0\b\s*/d' file ###Server1### 2 ###Server3### 5