Intereting Posts
Сценарий оболочки для удаления нескольких файлов Что означает символ @ в именах файлов В чем разница между optirun и primusrun (шмель) Как найти фактический бинарный / скрипт, используя «which» в zsh? Msgstr "Ошибка нечистота PCH FIFO на основе транскодера A" во время загрузки centos 7 на toshiba есть ли способ остановить отправку пользователей на нежелательные учетные записи электронной почты? Драйвер Debian Realtek RTL7832BS ЛУКС шифрует полный диск, сколько ОЗУ? Как я могу создать резервную копию каталога в NTFS, сохраняя атрибуты файлов Unix? Инструмент мониторинга процессора для Centos Как получить стандартный вывод / ошибку службы, управляемой systemd на EL7, чтобы перейти куда-нибудь, кроме / var / log / messages? Контекстные счетчики начинаются после восстановления iptables Регистрация входных и выходных данных без захвата всех введенных символов ввода и управления Ядро установки Dnf не устанавливает ядро ​​в / boot Рекомендуемый способ переупаковки собственных пакетов deb, которые включают старые системные библиотеки

получить часть строки и добавить к этой же строке

У меня есть файл с 19k строк, как эти:

a96abbb5da0985983e113a9a7484c063 management/modules/membership/file1 d7f7dd7e3ede3e323fc0e09381f16caf management/modules/invoices/path/file2 

Тем не менее, я хотел бы добавить имя модуля в конце строки. Таким образом, результат будет:

 a96abbb5da0985983e113a9a7484c063 management/modules/membership/file1 membership d7f7dd7e3ede3e323fc0e09381f16caf management/modules/invoices/path/file2 invoices 

Есть ли способ сделать это, например, с помощью sed или что-то подобное? Желательно без дополнительного файла, используя -i .

Имя модуля всегда будет в пути в следующем формате: modules/MODULENAME

С помощью sed возьмите следующее разделенное косой чертой поле и вставьте его в конец:

 sed -r 's,modules/([^/]*)/.*,& \1,' file 

awk решение.

 $ awk -F/ '{print $0" "$3}' file a96abbb5da0985983e113a9a7484c063 management/modules/membership/file1 membership d7f7dd7e3ede3e323fc0e09381f16caf management/modules/invoices/path/file2 invoices $ 

При использовании gnu awk вы можете использовать встроенную функцию, а не выводить ее во второй файл. например, awk -i inplace -F/ '{print $0" "$3}' file

Пытаться

 sed -i 'h; s#^.*modules/# #; s#/.*$##; H; x; s#\n##;' file