У меня есть следующий код в файле с именем awktest1.awk
:
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"} employee.txt
где employee.txt
содержит следующие данные:
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
Я запускаю awk
команду как:
awk -f awktest1.awk
но это просто печатает start
и не заканчивается. Может кто-нибудь помочь мне с тем, что я здесь делаю неправильно?
shell-script
awk
Сакет Агарвал
источник
источник
print $2, "\t", $5
вместоprint $2 "\t" $5
этого вы пишете 2-е поле, за которым следуют OFS (пробел), TAB, OFS и 5-е поле.Ответы:
Ошибка дает имя файла для обработки в скрипте; Вы должны удалить
employee.txt
из скрипта и запустить его следующим образомили даже, если скрипт исполняемый,
Сценарий становится
Как есть,
awk
ожидает ввода от стандартного ввода вместо чтения из файла. Вот почему это никогда не заканчивается ...источник
Чтобы дополнить ответ @ Stephen , если вы хотите жестко закодировать имя входного файла в
awk
сценарии, вы должны написать:Для нескольких файлов:
источник
Или, если вы не хотите передавать имя файла
employee.txt
в качестве аргумента командной строки, вы можете сделать что-то вроде этого:Код:
источник