다음과 같은 파일이 있습니다.
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