두 명령 출력을 한 줄씩 결합하는 방법은 무엇입니까? [복사]

두 명령 출력을 한 줄씩 결합하는 방법은 무엇입니까? [복사]

다음 두 가지 명령이 있다고 가정해 보겠습니다.

$ cat file1
file1_a
file1_b
file1_c
file1_d

그리고:

$ cat file2
file2_a
file2_b
file2_c
file2_d

사용자 정의 구분 기호(예: )를 사용하여 ...이러한 출력을 결합하여 다음 출력을 얻으려면 어떻게 해야 합니까?

$ # some fancy command like { cat file1 & cat file2 } | combine --separator='...'
file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d

?

답변1

나는 paste명령을 사용하는 것을 좋아합니다.

paste -d. file1 - - file2 < /dev/null

원하는 출력을 생성

file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d  

-</dev/null표준 입력을 참조하면 포인트 사이에 아무 것도 원하지 않기 때문에 사용하는 포인트를 세 배로 늘리기 위해 두 번 사용합니다 .

답변2

두 개의 파일이 있는 경우 paste탭으로 구분됩니다. 따라서 탭 문자를 원하는 구분 기호로 바꾸십시오.

$ paste file1 file2 | sed -e 's/\t/.../'

콘텐츠에 탭이 있는 경우 %:와 같이 표시되지 않는 새로운 구분 기호를 만드세요.

$ paste -d% file1 file2 | sed -e s/%/.../

답변3

이것은 @zacharybrady의 답변이지만 귀하가 요청한 것과 더 비슷합니다. 입력 과정에 관한 한. 연장하시면 될 것 같아요.

paste -d. <(cat file1) - - <(cat file2) < /dev/null

계속해서 진행해 주신 @zacharybrady에게 감사드립니다. 나는 join <(cat -n file1) <(cat -n file2) | cut -d" " -f2-이것을 잊어버렸다 paste. 하지만 올바른 필드 구분 기호를 얻을 수 없습니다.

참고: pasteutf-8과 호환되지 않는 것으로 나타났습니다. 그 이후의 첫 번째 바이트만 처리하므로 -d파기 -d…됩니다. (나는 데비안 jessie를 사용하고 있습니다. 붙여넣기(GNU coreutils) 8.23)

관련 정보