특정 줄 길이의 줄 중간과 끝에 문자 삽입

특정 줄 길이의 줄 중간과 끝에 문자 삽입

현재 저는 파일 폴더에서 작업 중입니다. 각 파일에는 다음과 같은 줄이 있습니다.

abcde    fghij
abcde    fghij
jklmn    pqrst
.....    .....

이 줄의 특정 줄 길이는 43입니다. 각 줄의 중간에는 탭 문자가 있고 끝에는 Windows 개행 문자가 있습니다 ^M. 다음 단계를 수행하고 싶습니다.

 First, select these lines with line length 43
 Second, replace the tab in the middle with a comma
 Third, replace the line break character at the end with a dot.

예상되는 출력은 다음과 같아야 합니다.

abcde, fghij.
abcde, fghij.
jklmn, pqrst.

sth다음을 시도했지만 실패했습니다.

 sed -i -e 's/^.\{43\}\r/ ./g' input.file

이 문제를 해결하는 방법을 아는 사람이 있나요?

고쳐 쓰다클릭하시면 됩니다이 링크하나 사다테스트 파일.   

답변1

이 시도:

sed -ne '/^.\{43\}$/s/\t/, /g;/^.\{44\}$/s/\r/./gp' input.file > new.file

또는 Mac 운영 체제를 사용하는 경우:

sed -ne $'/^.\{43\}$/s/\t/, /g;/^.\{44\}$/s/\r/./gp' input.file > new.file

예상되는 출력과 일치하도록 쉼표 뒤에 공백을 추가했습니다. 이것이 두 번째 일치 항목이 43자가 아닌 44자가 되는 이유입니다.

관련 정보