현재 저는 파일 폴더에서 작업 중입니다. 각 파일에는 다음과 같은 줄이 있습니다.
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자가 되는 이유입니다.