awk '$1 ~ /^FILE/ { print $1 " " $5 }'
Seu método não funciona porque ==
verifica a igualdade literal, não uma regex; você precisa usar ~
para isso.
Eu tenho o seguinte arquivo:
…
LINK=dummy 172.17.100 => 10.218.11 [PATH=/etc]
FILE=hosts 172.17.100 => 10.218.11 [PATH=/etc]
FILE=network 172.17.100 => 10.218.11 [PATH=/etc/sysconfig]
LINK=empty 172.17.100 => 10.218.11 [PATH=/etc]
FILE#TEST 172.17.100 => 10.218.11 [PATH=/etc/sysconfig]
…
Como imprimir o primeiro campo e o quinto campo apenas se a linha começar com a palavra FILE
?
A palavra FILE
pode ser localizada imediatamente no começo da linha ou depois do espaço ou da tecla TAB na linha.
Exemplo do que eu esperava receber
FILE=hosts [PATH=/etc]
FILE=network [PATH=/etc/sysconfig]
FILE#TEST [PATH=/etc/sysconfig]
Eu tento este awk mas não funciona
awk '$1 == "^[[:blank:]]*FILE*" && '{print $1" "$5}' file
Tente fazer isso:
awk '/^ *FILE=/{print $1, $5}'
ou
awk '/^[[:blank:]]*FILE=/{print $1, $5}'
Tags text-processing awk sed