붙여넣기 명령을 사용하여 두 개를 연결하고 있습니다..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
$2
file2.csv
a
$0
a
file3.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
.