Я новичок в awk, и я не знаю, возможно ли написать сценарий awk, который делает это:
У меня есть сотни файлов данных, которые я должен отсортировать. Для каждого я использую следующую строку:
awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex
...
и я получаю вывод, который мне нужен. Однако я хотел бы иметь скрипт для автоматизации этого действия, принимая каждый файл, применяя действие и записывая соответствующий отсортированный файл.
Буду признателен за вашу помощь!
FNR==1
. =)Вы можете применить файлы в цикле:
Или на одной строке:
Поскольку вы не указываете, какая оболочка, используйте более стандартный,
basename
вместо этого используя специальный синтаксис оболочки${file%%.tex}
.источник
shell
) и запустить приведенные выше команды в командной строке. Или откройте терминал и выполните команду там. Существует два способа указания скриптов (awk, shell и т. Д.): Либо в командной строке, либо в файле. Вашаawk
команда в публикации использует форму командной строки; моя команда "одна строка" также является формой командной строки.Старый вопрос, но, учитывая, что в последний раз, когда я видел одноядерный персональный компьютер десять лет назад, вы можете использовать GNU параллельно
Чтобы решить расширение оболочки и интерпретации кавычек
Используйте правильный шарик, чтобы выбрать входные файлы. Здесь я использую,
{.}
чтобы удалить расширение из выходного имени, потому что я добавляю его позжегде
X
число процессоров, которые вы хотите использовать, все же вы можете использовать 1. Это даст вам вfile[1-9]_sorted.tex
качестве выходных данныхисточник