Linux를 사용하여 쉼표를 필드 구분자로 사용하여 행을 열로 변환

Linux를 사용하여 쉼표를 필드 구분자로 사용하여 행을 열로 변환
server:~# cat file1.txt
abc
pqr
xyz

다음과 같이 변환하고 싶습니다.

abc,pqr,xyz

다음 명령을 사용하고 있습니다

server:~# cat file1.txt | tr "\n" ", "
abc,pqr,xyz,server:~#

내 입력에는 n개의 행이 포함될 수 있지만 우리의 입력에는 포함되지 않습니다.

달성하는 방법...

server:~# cat file1.txt | tr "\n" ", "
abc,pqr,xyz
server:~#

답변1

paste다음 명령을 사용할 수 있습니다.

paste -sd, file1.txt

기본적으로 paste여러 파일의 줄은 탭으로 구분되어 나란히 붙여넣어지며 -d이 옵션은 대체 구분 기호를 설정하고 -s줄 바꿈하도록 지시합니다.에스한 번에 하나의 파일(또는 이 경우 단일 파일)에서 직렬화합니다.

답변2

paste -sd,합리적이지만 대안을 원하거나 행을 결합하는 것보다 입력으로 더 많은 작업을 수행하는 경우:

$ awk '{printf "%s%s", (NR>1 ? "," : ""), $0} END{print ""}' file
abc,pqr,xyz

관련 정보