Basically, I got as far as an output of a line after using grep. I then want to feed the 7th field of that line and say "The colour of the shirt is "{the output of the 7th field}"
Ok, isso faz mais sentido para mim.
Para imprimir o sétimo campo, junto com uma string, use
awk '{ printf "The color is %s\n", $7 }'
ou
awk '{ print "The color is " $7 }'
(note que não há vírgula ou mais ou qualquer coisa entre a string entre aspas e $7
, as strings são concatenadas no awk simplesmente escrevendo-as uma ao lado da outra).
Você pode pular o grep
também e fazer o equivalente dentro de awk
:
awk '/some regex/ { printf "the seventh field is %s\n", $7 }'
O awk aceita principalmente as mesmas expressões regulares que grep -E
. ("principalmente", já que não consigo lembrar se há algumas pequenas diferenças.) Mas você também pode apontar a correspondência de padrões para apenas um campo específico:
awk '$3 ~ /regex for field three/ { printf "the seventh field is %s\n", $7 }'
Claro que processa todas as linhas correspondentes. Exemplo bobo:
$ awk '$1 ~ /^j/ { printf "the shirt of %s is %s\n", $1, $2 } ' < shirts
the shirt of jimmy is blue
the shirt of joe is red