sed 또는 기타 명령을 사용하여 점 뒤의 텍스트 패턴인 줄에 접두사를 추가합니다.

sed 또는 기타 명령을 사용하여 점 뒤의 텍스트 패턴인 줄에 접두사를 추가합니다.

sed 또는 다른 명령을 사용하여 Linux 파일을 편집하려고 합니다.

이것은 내 파일입니다:

first.xlsx
second.txt
third.ksh

파일 t를 다음으로 변경하고 싶습니다.

xlsx/first.xlsx
txt/second.txt
ksh/third.ksh

따라서 점 뒤의 텍스트를 줄 시작 부분에 추가하고 그 뒤에 슬래시를 추가해야 합니다.

이 변경을 수행하려면 어떤 sed 또는 다른 명령을 사용할 수 있습니까?

답변1

다음과 같이 변경할 수 있습니다.

sed 's|.*\.\(.*\)|\1/&|'

이스케이프 없이 리터럴 문자 로 |사용할 수 있도록 구분 기호 로 사용됩니다 . 파일을 제자리에서 변경 /하려면 다음을 사용하십시오.t

sed -i 's|.*\.\(.*\)|\1/&|' t

답변2

awk대신 사용하십시오 sed:

awk -F . '{ printf "%s/%s\n", $NF, $0 }' file

또는 /출력 필드 구분자로 사용됩니다.

awk -F . -v OFS=/ '{ print $NF, $0 }' file

이는 .필드 구분 기호로 처리되며 마지막 필드( $NF)가 출력되고 그 뒤에 슬래시와 원래 줄( $0)이 표시됩니다.

최신 버전의 GNU에서는 다음 awk을 사용하여 파일을 그 자리에서 수정할 수 있습니다.

awk -i inplace -F . '{ printf "%s/%s\n", $NF, $0 }' file

관련 정보