탭 구분 기호를 사용하여 두 개의 정렬된 파일을 연결하려고 합니다 csv
.
저는 이 명령을 처음 접했기 join
때문에 어떻게 사용하는지 잘 모르겠지만 파일의 모든 탭을 공백으로 바꾸는 것 같습니다(정렬이 엉망입니다).
내가 사용하는 명령은 다음과 같습니다.
join -1 5 -2 2 -t $'\t' -o $order --header file1.csv file2.csv |
column -t > result.csv
첫 번째 파일에서 데이터는 다음과 같습니다.다섯 번째 장소열 및2위두 번째 파일의 열입니다. 변수는 $order
다양한 열을 포함하는 간단한 문자열입니다."1.1 1.2 1.3"등. (28안에). 내가 사용하는 구분 기호는 SE에서 가져온 것입니다.
이게 어디서 나오는지 아시나요?
답변1
join
구분 기호로 사용되는 문자는 -t
입력 및 출력에 사용됩니다.
문제는 column -t
사용하는 후처리 단계에 있습니다. 열을 잘 정렬하기 위해 탭 문자를 적절한 수의 공백으로 대체합니다. 출력에서 탭을 유지하려면 join
데이터를 전달하지 마세요 column -t
.
column -t
표 형식 데이터의 최종(시각적) 프레젠테이션 에만 사용됩니다 .
답변2
column -t
이는 테이블 형식 모드가 자동으로 열 너비를 결정하고 구분된 출력으로 읽을 수 있는 테이블 형식 출력을 생성하기 때문입니다.공간설마탭. 명시적 을 사용하여 이를 수행하려면 column
출력 구분 기호로 플래그를 설정하십시오.-o
join -1 5 -2 2 -t $'\t' -o $order --header file1.csv file2.csv |
column -o '\t' > result.csv