BASH从字符串中排除特定的char

时间:2016-10-12 09:47:06

标签: linux bash awk sed

我必须实现一个脚本,我应该获得虚拟主机列表apache:

apachectl -S | grep -i site | awk '{print $5}'

输出:

Syntax OK
(/usr/local/apache2/conf/site.conf:1)

我怎么能收到这个输出? (没有语法OK /()/:*):

/usr/local/apache2/conf/site.conf 

3 个答案:

答案 0 :(得分:1)

awk设置():作为字段分隔符,并获取第二个字段:

awk -F'[():]' '{print $2}'

示例:

% awk -F'[():]' '{print $2}' <<<'Syntax OK (/usr/local/apache2/conf/site.conf:1)'
/usr/local/apache2/conf/site.conf

答案 1 :(得分:1)

语法OK文本必须转到stderr,它不会转到stdout或者它被grep / awk过滤掉了。试试这个:

apachectl -S 2>&1 | awk '$5~/site/{gsub(/^\(|:[^:]+\)$/,"",$5); print $5}'

答案 2 :(得分:0)

使用正则表达式从左括号捕获到&#34;:&#34;

java