Imprimir campos do arquivo somente se a linha começar com uma palavra específica

2

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
    
por yael 20.02.2013 / 12:46

2 respostas

4
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.

    
por 20.02.2013 / 12:49
3

Tente fazer isso:

awk '/^ *FILE=/{print $1, $5}'

ou

awk '/^[[:blank:]]*FILE=/{print $1, $5}'
    
por 20.02.2013 / 12:52