【问题标题】:how to use sed, awk to print only the path with specific word?如何使用 sed、awk 只打印带有特定单词的路径?
【发布时间】:2017-12-06 16:18:25
【问题描述】:

我有一个如下所示的文本文件:

ErrorLog "|/usr/local/apache2/bin/rotatelogs /var/log/apache/error_log.%Y-%m 200M"

ErrorLog "/var/log/apache2/error_log"

我只需要过滤带有单词 error_log 的路径。 我需要输出为:

/var/log/apache2/error_log.%Y-%m

或者

/var/log/apache2/error_log

【问题讨论】:

标签: linux bash awk sed


【解决方案1】:

grep

grep -o '[^[:space:]]*\<error_log\>[^[:space:]]*' file
  • [^[:space:]]* - 匹配非空白字符
  • \&lt;\&gt; - 是单词边界

示例输出:

/var/log/apache/error_log.%Y-%m
"/var/log/apache2/error_log"

【讨论】:

  • 第二行的示例输出有引号,而 OP 中的示例没有引号。不确定这对 OP 是否重要,但我会提到它。
  • @user3439894,在问题下添加评论
【解决方案2】:

grep 可以

$ grep -o '\S*error_log\S*' file

/var/log/apache/error_log.%Y-%m
"/var/log/apache2/error_log"

如果您想将它们拉到同一行并摆脱引号管道到

... | tr -d '"' | xargs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多