sed를 사용하여 N 줄을 추가하는 방법

sed를 사용하여 N 줄을 추가하는 방법

다음 CSV 파일이 있습니다.

hostname1,this is a test,001^M
hostname2,this is
a test,002^M
hostname3,this
is
a
test,003^M

첫 번째 줄은 해당 줄의 올바른 형식입니다. 다른 행도 동일한 형식을 따르기를 원합니다. 문제는 두 번째 열에 있습니다. 일부 열에는 캐리지 리턴이 있으므로 세 번째 열은 새 줄에 있지만 sed를 사용하여 몇 줄이 분리되어 있는지에 관계없이 모든 줄을 결합하고 싶습니다.

답변1

^M시퀀스가 CR 문자를 나타낸다고 가정합니다 .

$ cat -et file.csv
hostname1,this is a test,001^M$
hostname2,this is$
a test,002^M$
hostname3,this$
is$
a$
test,003^M$

그런 다음 줄이 CR로 끝나지 않으면 다음을 사용하여 줄을 다음 줄에 연결할 수 있습니다.

sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv

전임자.

$ sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv | cat -et
hostname1,this is a test,001^M$
hostname2,this isa test,002^M$
hostname3,thisisatest,003^M$

관련 정보