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


9

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기본값입니다. 큰.

답변:


17

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

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

또는:

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

두 개의 탭이 필요한 경우 :

paste file1 /dev/null file2

" 사용하여 /dev/null텍스트 처리에 두 개의 열이 만들 작품"(이외의 것은 : 내가 지금까지와 그렇지 않은 경우 놓친이 상식입니다 : 당신은이 정보를 얻었 는가?)
erch

1
@ Chirp.NotLuke. /dev/null그래서있는 거 붙여 넣기, 읽기, 빈 파일 같은 역할을 file1차례로 빈 파일 및 빈 파일, 구분이되는과 파일 2,, a, bc. -d작동 방식 에 대한 자세한 내용 은 paste매뉴얼 페이지에 있습니다.
Stéphane Chazelas

@ StéphaneChazelas 또한 pr -mts'abc' file1 file2대안으로 추가 할 수 있습니까?
Sundeep

4

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

예 :

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

2

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

lam file1 -s delimiter file2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.