【问题标题】:Egrep - find 0 (zero) and ignore previous lineegrep - 查找 0(零)并忽略上一行
【发布时间】:2013-07-24 11:09:53
【问题描述】:

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

电流输出:

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

所需输出:

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

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

【问题讨论】:

  • awk 会更好。我认为grep 做不到。

标签: grep


【解决方案1】:

这是一种可能的方法:

$ 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,我们让它也打印匹配行之前的行。

【讨论】:

    【解决方案2】:

    GNU 代码

    sed '$!N;/\s*\b0\b\s*/d' file
    
    $ sed '$!N;/\s*\b0\b\s*/d' 文件 ###服务器1### 2 ###服务器3### 5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2019-09-26
      • 2015-06-15
      • 2017-04-11
      • 2014-11-29
      • 2022-01-18
      • 2011-07-17
      相关资源
      最近更新 更多