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

У меня есть файл с 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