Попытка переименовать файлы на основе текстовых файлов

Однократная сортировка предоставленных выборочных данных возвращает выходные данные в том же порядке, в котором они были запрошены. Предположим, что строка заголовка не включена в сортировку.

sort datafile

Следующим шагом является подсчет количества раз, когда мы видели одинаковые идентификаторы для заполнения столбца 5. Мы также заменяем заголовок, чтобы включить новый столбец 5.

Мы хотим пропустить исходную строку заголовка из вашего синтаксического анализа awk.

awk 'BEGIN {print "ID\tNAME\tCOMPANY\tYEAR\tCOUNT"} NR>1 {id_count[$1]++; print $0 "\t" id_count[$1]}' datafile

Если первая строка файла данных является заголовком, awk игнорирует эту строку, (требуя, чтобы номер строки/записи был больше 1 ).

Просто соедините команды, соединив первую команду со второй. В следующем примере мы предполагаем, что строка заголовка не включена в вывод sort.

sort datafile | awk 'BEGIN {print "ID\tNAME\tCOMPANY\tYEAR\tCOUNT"}  {id_count[$1]++; print $0 "\t" id_count[$1]}'

Команда сортировки по умолчанию включает все поля, так что в итоге вы получите сортировку по столбцам, в которых сначала будут идентификаторы, затем имена, затем компании и годы. Команда awk печатает новый заголовок (, более или менее повторяющий исходный ), и добавляет столбец COUNT.

Остальные строки данных анализируются путем проверки поля 1 (ID )с использованием ассоциативного массива. Каждая строка печатается как есть с табуляцией, и к ней добавляется количество просмотров столбца 1.

Окончательный оператор печати может сначала сбить с толку, но символ пробела в awk является конкатенатором. $0, вкладка и значение переменной будут сжаты вместе в выводе. Другой способ написать это мог быть;

printf "%s\t%d\n",$0,id_count[$1]
1
28.11.2019, 10:21
1 ответ

Очень зш -специфический:

old=(${(f)"$(<OLD)"}) new=(${(f)"$(<NEW)"})
for o n (${old:^new}) echo mv -i -- $o $n

Удалите echo, если все устраивает.

Или переносной:

while IFS= read -r old <&3 && IFS= read -r new <&4; do
  echo mv -i -- "$old" "$new"
done 3< OLD 4< NEW
2
27.01.2020, 23:29

Теги

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