다음 두 가지 명령이 있다고 가정해 보겠습니다.
$ 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
. 하지만 올바른 필드 구분 기호를 얻을 수 없습니다.
참고: paste
utf-8과 호환되지 않는 것으로 나타났습니다. 그 이후의 첫 번째 바이트만 처리하므로 -d
파기 -d…
됩니다. (나는 데비안 jessie를 사용하고 있습니다. 붙여넣기(GNU coreutils) 8.23)