awk не заканчивается

Еще более быстрый, более грязный способ сделать его (с подоболочкой):

$ ( cd my/path/to/folder && python myprogram.py )
8
09.08.2015, 20:15
3 ответа

Ошибка дает имя файла для обработки в сценарии; вы должны удалить 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 ожидает ввода со стандартного ввода вместо чтения из файла. Вот почему он никогда не заканчивается ...

12
27.01.2020, 20:08

В дополнение к @ ответ Стивена , если вы хотите жестко закодировать имя входного файла в 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"}
11
27.01.2020, 20:08

Или, если вы не хотите передавать имя файла employee.txt в качестве аргумента командной строки вы можете сделать что-то вроде этого:

Код:

#!/bin/awk -f
BEGIN{
    print "start"
    while((getline <"employee.txt") > 0){
        {print $2, "\t", $5}
    }
    print "end"
} 
5
27.01.2020, 20:08

Теги

Похожие вопросы