JOIN에서 반환된 잘린 결과

JOIN에서 반환된 잘린 결과

Linux에서는 Join 명령을 사용하지만 결과는 컴퓨터마다 다릅니다. 두 개의 간단한 파일이 있습니다.

cat 1.txt  
a aaa,0.2
b bbb,0.3
c ccc,0.5

cat 2.txt
a aaa,0.2
b bbb,0.3
c ccc,0.6

다음 명령을 실행 중입니다.

join -a 1 -1 1 -2 1 -t "," -o 1.1' '1.2' '2.2 <(cat 1.txt| sort -t ",") <(cat 2.txt| sort -t ",") 

머신 1의 결과:

,0.2a,0.2
,0.3b,0.3
,0.6c,0.5

join --version
join (GNU coreutils) 8.13

locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

머신 2의 결과:

a aaa,0.2,0.2
b bbb,0.3,0.3
c ccc,0.5,0.6

join --version
join (GNU coreutils) 5.97

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

분명히 첫 번째 컴퓨터의 결과는 잘못되었습니다. 잘렸습니다. 나는 성공하지 못한 채 다른 로케일을 사용해 보았습니다.

답변1

을 사용하여 파일을 복구 dos2unix하거나, 설치되지 않은 경우:

sed -i 's/\r$//' {1,2}.txt 

관련 정보