【问题标题】:egrep string caseegrep 字符串大小写
【发布时间】:2012-07-23 06:18:28
【问题描述】:

我必须从一个类似这样的文件名 temp 中 grep

Process             State  
BE_RP:1 [PL_2_3]    Running  
BE_RP:2 [PL_2_4]    Running  
BE_RP:3 [PL_2_5]    Running  
BE_RP:4 [PL_2_6]    Running  
FE_SCTP:0 [PL_2_3]  Running  
FE_SCTP:1 [PL_2_4]  Running  
BE_NMP:0            Not Running  
OAM:0               Running  

我需要编写一个 egrep 语句,它将返回处于运行或未运行状态的进程数。

【问题讨论】:

  • 我发布了一半的信息.. 我想忽略 oam
  • 这是awk的一个很好的用例
  • 以后请注意,如果您想澄清问题,我们鼓励您编辑问题。问题后面有“编辑”链接。

标签: regex linux shell


【解决方案1】:
awk '/^OAM/ { next } /Not Running[ \t]*$/{s++} END {print s, NR-s-1}' foo.txt

打印<running><not running>

【讨论】:

  • 编辑排除grep -v ^OAM
【解决方案2】:

跑步

$ grep -v 'OAM' input | grep -cP '(?<!Not) Running\s*$'
6

没有运行

$ grep -v 'OAM' input | grep -cP 'Not Running\s*$'
1

【讨论】:

  • @user1081026。添加-E 选项,再试一次。
  • 即使使用-E,它也可能无法识别\s,这是一个Perlism。我会简单地取出\s*,或者在这里用-E 换成-P
【解决方案3】:
sed '{
1 d
s/^[^:]*:[0-9]*[ ]*//
s/^[^]]*]//
s/^[ ]*//
}' input_file | sort | uniq -c

【讨论】:

    【解决方案4】:
    grep -P '^(?!OAM:0).*Running' temp | cut -f2 | wc -l
    

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2011-01-07
      • 2022-11-22
      相关资源
      最近更新 更多