Eu tenho o seguinte código em um arquivo chamado awktest1.awk
:
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"} employee.txt
onde employee.txt
contém os seguintes dados:
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
Eu executo o awk
comando como:
awk -f awktest1.awk
mas apenas imprime start
e não termina. Alguém pode me ajudar com o que estou fazendo de errado aqui?
shell-script
awk
Saket Agarwal
fonte
fonte
print $2, "\t", $5
ao contrárioprint $2 "\t" $5
, você está escrevendo o segundo campo seguido de OFS (espaço), TAB, OFS e o quinto campo.Respostas:
O erro está fornecendo o nome do arquivo para processar no script; você deve remover
employee.txt
do script e executá-lo da seguinte maneiraou ainda, se o script for executável,
O script se torna
Como está,
awk
está aguardando a entrada da entrada padrão em vez de ler um arquivo. É por isso que nunca acaba ...fonte
Para complementar a resposta de @ Stephen , se você quiser codificar o nome do arquivo de entrada no
awk
script, escreva:Para vários arquivos:
fonte
Ou, se você não deseja passar o nome do arquivo
employee.txt
como argumento da linha de comando, pode fazer algo assim:Código:
fonte