Как использовать разделитель записей команды AWK в Linux

Попробуйте в один шаг:

md5sum * | awk 'NR==FNR {FN[$1] = $2; next} {print "mv -v \"" $2 "\" \"" FN[$1] "\""}' md5file -

Это создает сигнатуру md5sum для каждого файла в вашем рабочем каталоге, передает ее в скрипт awk, который считывает «старые» имена файлов из старого файла md5 в массив, индексированный сигнатурой, а затем считывает фактические имена файлов. со стандартного ввода (-, канал )и выводит соответствующую команду mvна стандартный вывод. Передайте это в оболочку (| sh), если вас устраивает то, что предлагается.

0
17.06.2021, 19:02
1 ответ

В вашем коде используется ,для разделения двух инструкций. Вам нужно ;вместо:

$ awk 'BEGIN{RS="\n\n"; FS="\n";} {print $1,$2,$3,$4,$5}' file
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37 65
Edwin 2537 78 67 45
Dayan 2415 30 47 20
2
28.07.2021, 11:23

Теги

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