문자가 511자를 초과하면 두 파일을 열별로 연결할 때 붙여넣기 명령이 작동하지 않는 이유는 무엇입니까?

문자가 511자를 초과하면 두 파일을 열별로 연결할 때 붙여넣기 명령이 작동하지 않는 이유는 무엇입니까?

붙여넣기 명령을 사용하여 두 개를 연결하고 있습니다..csv파일은 열로 정렬됩니다. 두 파일 모두 거대한 파일이며 실행하면반죽명령은 다음과 같습니다. 여기서 쉼표(,)는 구분 기호입니다.

paste -d',' file1.csv file2.csv > file3.csv

명령이 출력을 제공할 수 없습니다.

paste: line too long

그런데 명령어 붙여넣기에 대한 매뉴얼과 인터넷에서 같은 내용을 찾아보기도 했습니다. 다음 진단을 찾았습니다.

"line too long"         Output lines are restricted  to  511
                         characters.

그럼 결과를 얻을 수 있는 다른 방법은 없나요?

나는 다음 버전의 bash를 사용하고 있습니다.

GNU bash, version 3.2.57(1)-release (sparc-sun-solaris2.10)

답변1

이 명령을 시도해 보세요

nawk '{if ((getline a < "-") > 0) $0 = $0 "," a; print}' file1.csv < file2.csv > file3.csv

이 명령은 합계를 한 줄씩 검토 file1.csv하고 file2.csv(nawk 매치홀 행, 첫 번째 열, 두 번째 열...)에서 줄을 저장하고 변수에서 줄을 저장합니다. 그런 다음 (파일 1의 줄)을 인쇄하고 ","를 인쇄한 다음 (파일 2의 줄)을 인쇄합니다.file1.csv$0$0$1$2file2.csva$0afile3.csv

답변2

파일을 새 파일 핸들로 리디렉션하고 입력에서 읽을 때 읽습니다.

#! /bin/bash
exec 3< file1
while read -r two ; do
    read -r -u3 one
    echo "$one,$two"
done < file2

답변3

문제는 Solaris에서 제공하는 도구가 GNU 도구만큼 좋지 않다는 것입니다. 가능하다면 설치해야 합니다. 그렇지 않다면 아마도 더 좋은 paste것이 있을 것입니다 xpg4.

관련 정보