Еще более быстрый, более грязный способ сделать его (с подоболочкой):
$ ( cd my/path/to/folder && python myprogram.py )
Ошибка дает имя файла для обработки в сценарии; вы должны удалить employee.txt
из скрипта и запустить его следующим образом
awk -f awktest1.awk employee.txt
или даже, если скрипт исполняемый,
./awktest1.awk employee.txt
Скрипт станет
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"}
Как есть, awk
ожидает ввода со стандартного ввода вместо чтения из файла. Вот почему он никогда не заканчивается ...
В дополнение к @ ответ Стивена , если вы хотите жестко закодировать имя входного файла в awk
сценарий, вы должны написать:
#!/bin/awk -f
BEGIN{
ARGC=2
ARGV[1] = "employee.txt"
OFS = FS = "\t"
print "start"
}
{print $2, $5}
END{print "end"}
Для нескольких файлов:
#!/bin/awk -f
BEGIN{
ARGC=1
ARGV[ARGC++] = "employee1.txt"
ARGV[ARGC++] = "employee2.txt"
ARGV[ARGC++] = "employee3.txt"
# ...
# or ARGC=1+split("employee1.txt employee2.txt employee3.txt", ARGV)
OFS = FS = "\t"
print "start"
}
{print $2, $5}
END{print "end"}
Или, если вы не хотите передавать имя файла employee.txt
в качестве аргумента командной строки вы можете сделать что-то вроде этого:
#!/bin/awk -f
BEGIN{
print "start"
while((getline <"employee.txt") > 0){
{print $2, "\t", $5}
}
print "end"
}