我有一个包含 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
答案1
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
答案2
使用 sed,抓住下一个斜杠分隔的字段,并将其粘贴在末尾:
sed -r 's,modules/([^/]*)/.*,& \1,' file
答案3
尝试
sed -i 'h; s#^.*modules/# #; s#/.*$##; H; x; s#\n##;' file