탭 교체를 공백으로 결합

탭 교체를 공백으로 결합

탭 구분 기호를 사용하여 두 개의 정렬된 파일을 연결하려고 합니다 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

관련 정보