sed: 주어진 줄(또는 마지막 줄)에서 개행 문자를 바꿉니다.

sed: 주어진 줄(또는 마지막 줄)에서 개행 문자를 바꿉니다.

다음과 같은 파일이 있습니다.

a,b,c,d,e,f
1,2,3,4,5,6
7,8,9,0,1,2

마지막 두 줄을 다음과 같이 쉼표로 연결해야 합니다.

a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2

문제는 이것이 모두 파일에 두 개의 새 줄을 추가하는 루프 내에 있다는 것입니다.

a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5
4,3,2,1,0,9

이제 나도 똑같은 일을 해야 해저것파일 끝의 마지막 줄

a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9

그래서 간단히 말해서 교체해야합니다.마지막쉼표가 포함된 텍스트 파일의 새 줄. 줄이 추가되기 때문에 마지막 줄만 표시됩니다.

여러 가지 방법을 시도했지만 작동하지 않습니다. 마지막은 이지만 sed '$!N;s/\n/,/' dna.data개행 문자가 있는 모든 줄에서 작동합니다.

어떤 아이디어가 있나요?

답변1

파일이 줄 바꿈으로 끝나지 않으면 마지막 대체 명령만 처리하면 됩니다(플래그를 사용하여 파일을 -i제자리에서 변경 sed).

$ sed '$!N;$s/\n/,/' dna.data
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9  

파일이 개행 문자로 끝나면 편집기를 사용할 수 있습니다 ex.

$ ex dna.data
$-1s/\n/,/
1,2,3,4,5,6,7,8,9,0,1,2
x

아니면 한 줄로

echo -e '$-1s/\\n/,/\nx' | ex dna.data

답변2

이것은 당신에게 도움이 될 수 있습니다 (GNU sed):

sed -i '$!N;$s/\n/,/;P;D' file

관련 정보