열 비교를 기반으로 두 파일 데이터 결합

열 비교를 기반으로 두 파일 데이터 결합

아래와 같이 각각 타임스탬프와 개수를 포함하는 두 개의 파일이 있습니다.

파일 1.txt

   9 2016-06-22
   3 2016-06-23
   2 2016-06-24
   1 2016-06-25
   2 2016-06-26
   2 2016-06-27

파일 2.txt

   3 2016-06-23
   2 2016-06-25
   5 2016-06-27

두 파일의 날짜 열(col-3)을 사용하는 출력을 생성하고 아래와 같이 연결된 출력을 생성하고 싶습니다.

예상되는 결과:

   9   2016-06-22
   3 3 2016-06-23
   2   2016-06-24
   1 2 2016-06-25
   2   2016-06-26
   2 5 2016-06-27

붙여넣기 명령을 사용하는 것은 매우 복잡하며 예상되는 출력을 얻으려면 수동 작업이 필요합니다. 누구든지 나를 도와줄 수 있나요?

감사해요.

답변1

가장 좋은 해결책은 join다음 명령을 사용하는 것입니다.

join -j 2 -a 1 -e " " -o 1.1 2.1 1.2 File1.txt File2.txt

이것은 더 우아한 해결책은 아니지만 쉘 스크립팅을 배우고 싶다면 다음과 같이 작업을 완료해야 합니다.

while read line1; do
    file1_number=$(echo ${line1} | cut -d ' ' -f 1)
    file1_date=$(echo ${line1} | cut -d ' ' -f 2)
    line2=$(grep ${file1_date} File2.txt)
    file2_number=$(echo ${line2} | cut -d ' ' -f 1)
    if [[ -z "${file2_number}" ]]; then
        file2_number=" "
    fi
    echo ${file1_number} "${file2_number}" ${file1_date}
done < File1.txt

관련 정보