Несколько входных файлов и выходных файлов в awk

У меня есть папка с текстовыми файлами с именами от 000.txt до 181.txt. Как я могу обработать их все (в командной строке) одним и тем же скриптом awk (program.awk) и отправить их в соответствующие выходные файлы (output000.txt - output181.txt)?

1 ответ

Решение

Предположим, что у нас есть папка с текстовыми файлами с именами от 000.txt до 181.txt. Вот пример обработки всех их одним и тем же сценарием awk и отправки их в соответствующие выходные файлы (output000.txt - output181.txt):

awk 'NR>6{print>("output" FILENAME)}' {000..181}.txt

Если мы используем bash, затем {000..181}.txt расширится до имен наших 182 входных файлов.

В awk (для этого может потребоваться GNU awk), FILENAME Имя входного файла, над которым в данный момент работает awk. таким образом ("output" FILENAME) это имя нашего текущего выходного файла.

Предназначенный просто в качестве примера, вышеприведенный просто печатает все, кроме первых шести строк входного файла, в выходной файл. Более сложные программы будут использовать те же принципы.

Другие вопросы по тегам