아래와 같이 각각 타임스탬프와 개수를 포함하는 두 개의 파일이 있습니다.
파일 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