Eu reformatei o código awk
:
for(i=1;i<=NF;i++)
if($i~/-f/)
print $(i+1)
O loop for itera de 1 a NF
, o número de campos em qualquer linha de entrada.
Cada campo ( $i
) na linha de entrada é verificado para ver se corresponde ao padrão "-f", que é apenas um literal de string.
Se um campo corresponder a "-f", o código imprimirá o campo seguindo o campo que contém "-f".
Na minha caixa RHEL, isso acaba sendo impresso:
/www/csbe-int-fb-na/generated/httpd.conf -C
Se você olhar atentamente para a linha de entrada, há um campo que consiste exatamente em "-f" e, de fato, awk
imprime o próximo campo, "/ www / csbe-int-fb-na / generated / httpd.conf "Confusamente, esse campo contém um" -f "incorporado, portanto, na próxima iteração do for-loop, o script awk
localiza" / www / csbe-int-fb-na / generated / httpd. conf "contém" -f ", então imprime o próximo campo," -C ".
Se tudo o que você quer é o arquivo de configuração do Apache, você pode modificar o padrão que o campo deve corresponder para torná-lo uma correspondência exata e ter o script awk
encerrado depois de encontrar o campo "-f" e imprimindo próximo campo.
awk '{for(i=1;i<=NF;i++)if($i~/^-f$/) {print $(i+1); exit} }'