Заменить значение в определенном столбце в файле с разделителями вертикальной черты в определенной строке — sed или awk?

В зависимости от фактических имен каталогов вы можете использовать это

mv folder/subfolder* destination/

Если нет шаблона(subfolder*)для соответствия именам папок, вы можете сделать это

find folder -mindepth 1 -maxdepth 1 -type d -exec mv {} destination/ \;

или даже это

find folder -mindepth 1 -maxdepth 1 -type d -exec mv -t destination/ {} +
2
17.09.2020, 20:48
1 ответ

В GNU sed,

sed -E '2s/^(([^|]*\|){2})[^|]*/\1changed/' input
  • Первая «2»(2s)определяет номер строки.
  • Второе «2»({2})указывает, сколько столбцов пропустить и оставить то же самое. Если вы хотите изменить 17-е поле, используйте {16}.
  • Эта команда запишет измененный файл в стандартный вывод. Вероятно, вам следует сначала запустить его с выводом на терминал. чтобы убедиться, что это то, что вы хотите. Потом, если хотите, можете запустить команду с выводом во второй файл, а затем переместите или скопируйте этот файл поверх входного файла.
  • Кроме того, вы можете добавить опцию -iв sed чтобы перезаписать входной файл.

В ОК:

awk -F'|' -vOFS='|' 'NR==2 {$3 = "changed"} {print}' input
  • Эта команда запишет измененный файл в стандартный вывод. Вероятно, вам следует сначала запустить его с выводом на терминал. чтобы убедиться, что это то, что вам нужно. Потом, если хотите, можете запустить команду с выводом во второй файл, а затем переместите или скопируйте этот файл поверх входного файла.
3
18.03.2021, 23:04

Теги

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