如何使用sed,awk只打印具有特定单词的路径?

时间:2017-12-06 16:18:25

标签: linux bash awk sed

我有一个看起来像这样的文本文件:

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

2 个答案:

答案 0 :(得分:1)

grep

grep -o '[^[:space:]]*\<error_log\>[^[:space:]]*' file
  • [^[:space:]]* - 匹配非空格字符
  • \<\> - 是字边界

示例输出:

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

答案 1 :(得分:0)

grep会做

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

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

如果你想将它们拉到同一行并删除引号管道

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