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