【问题标题】:How do i use grep command with multiple search string?如何使用带有多个搜索字符串的 grep 命令?
【发布时间】:2015-12-04 23:50:00
【问题描述】:

当我使用:ps -o user,cmd 我的输出是:

User    CMD
0        in.telnetd
0        sh
0        processd
0        processe
0        in.telnetd
0        -sh
0        top

我想在执行 grep 命令后获得 2 行(包含已处理和进程)。

我用的是什么:

 1.   ps -o user,cmd | grep "processd\|processe"
 2.   ps -o user,cmd | grep processd | grep processe

我是使用正确的格式来 grep 我想要的还是我需要修改我的查询?

【问题讨论】:

    标签: unix terminal grep


    【解决方案1】:

    一种方法是:

    ps -o user,cmd | grep "process[de]"
    

    当然,你最终也可能会遇到类似的行

    0        /some/other/app --with --lots of arguments including also processe
    

    为了确保你没有发现它,你应该使用 awk。

    【讨论】:

      【解决方案2】:

      你在寻找

      ps -o user,cmd | egrep "processd|processe"
      

      当我需要检查日志文件时,我会使用类似的东西:

      interesting="keyword1"
      interesting+="|key2
      interesting+="|key3"
      skip="garbage1"
      skip+="|garb2"
      skip+="|garb3"
      
      grep "^20150909" logfile | egrep "${interesting}" | egrep -v "${skip}"
      

      【讨论】:

      • 投票吧。仅供参考,我认为那些现代的 POSIX-y 人正在摆脱 egrep 并建议我们改用 grep -E
      【解决方案3】:

      [SOLVED]

      经过反复试验,我才知道-E 选项。

      ps -o user,cmd | grep -E processd\|processe

      【讨论】:

      • 供您参考:有三个类似grep 的命令:常规grep(使用普通正则表达式)、fgrepgrep -F(使用修复字符串)和@ 987654328@或grep -E(扩展的grep,可以组合不同的正则表达式)。
      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多