다음과 같은 19,000줄의 파일이 있습니다.
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