Я использую awk для обмена полями в имени файла, используя два разных разделителя полей. Я хочу знать, можно ли сохранить оба разделителя '/' и '_' в правильных положениях на выходе.awk: Сохранять несколько разделителей полей
Пример:
Я хочу изменить это:
/путь/к/example_file _123.txt
в это:
/путь/к/file_example _123.txt
Я пробовал:
awk -F "[/_]" '{ t=$3; $3=$4; $4=t;print}' file.txt
но полевые разделители отсутствуют выхода:
path to file example 123.txt
Я попытался сохранения разделители полей:
awk -F "[/_]" '{t=$3; $3=$4; $4=t; OFS=FS; print}' file.txt
, но я получаю это:
[/_]path[/_]to[/_]file[/_]example[/_]123.txt
Есть ли способ сохранить правильный оригинал разделитель полей в awk, когда вы работаете с несколькими разделителями?
Не используйте несколько разделителей полей. Используйте '/' в качестве разделителя полей, а затем используйте 'split()' для разделения части имени файла. – Barmar
Ваши выбранные поля также очень не работают в ваших сценариях. Не говоря уже о том, что ваш первый и второй сценарии здесь идентичны (я предполагаю, что вы забыли «BEGIN {OFS = FS}» или что-то в этом примере во втором примере? –
Могу ли я передать его для разделения? Я думал, что split только разбивает фактический файл на части (в отличие от имени файла) –