我必须实现一个脚本,我应该获得虚拟主机列表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
答案 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