[unix] 붙여 넣기 명령 : (다중) 구분 기호 설정

Linux에서는 paste(GNU coreutils) 8.13에서 다음과 같은 문제가 있습니다.

기본값 (TAB) 이외의 다른 분리 문자를 설정하려고하면 정의 된 분리 문자의 첫 문자 만 인쇄하거나 완전히 무시합니다.

질문 : 사용할 때 (다중) 구분 기호를 어떻게 정의 paste 합니까?

예를 들어 abc-123 을 구분자로 사용하는 것이 좋습니다. “다중”의 경우, 예를 들어 1 대신 2 TABS를 의미합니다.


지금까지 시도한 구분 기호를 포함하는 패턴은 다음과 같습니다.

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

모두 동일한 결과 : 첫 번째 문자 만 허용되거나 완벽하게 무시됩니다. 또한 짧은 버전 -d"\"과 여러 인스턴스를 시도했습니다 . & ndahs; 아무것도.

또한:

  • --delimiters="\\" → 오류 메시지

내가 원하는 것은 아니지만 완벽하게 작동하는 것 :

  • --delimiters="\n" → 줄 바꿈
  • --delimiters="\0" → 사이에 아무것도
  • --delimiters="\t"TAB기본값입니다. 큰.


답변

abcfile1과 file2 사이 를 가지려면 다음을 수행하십시오.

paste -d abc file1 /dev/null /dev/null file2

또는:

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

두 개의 탭이 필요한 경우 :

paste file1 /dev/null file2


답변

결합 할 파일을 두 개만 제공하기 때문에 구분 기호 문자열의 각 문자는 각 입력 파일의 각 행 결합 사이에 사용됩니다.

예 :

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...


답변

BSD 시스템 (리눅스가 아님 lam)에는 위의 솔루션보다 더 빠르고 짧은 ( “라미네이트”와 같은) 유틸리티가 있습니다.

lam file1 -s delimiter file2


답변