파일 1:( text1.txt
)
Row_Added_Ts Count
01/01/14 2022448
02/01/14 8345155
03/01/14 8663852
04/01/14 6785739
05/01/14 5279913
파일 2: text2.txt
( )
Row_Added_Ts Count
01/01/14 211
02/01/14 1598
03/01/14 1710
05/01/14 5279913
06/01/14 7953261
결과물 파일:
Row_Added_Ts Count Row_Added_Ts Count Difference
01/01/14 2022448 01/01/14 211 2022237
02/01/14 8345155 02/01/14 1598 8343557
03/01/14 8663852 03/01/14 1710 8662142
04/01/14 6785739 04/01/14 0 6785739
05/01/14 5279913 05/01/14 5279913 0
06/01/14 0 06/01/14 7953261 -7951831
요구 사항은 2개의 파일을 병합하고 0
일치하지 않는 줄을 채우는 것입니다. 또한 최종 출력 파일의 개수도 다릅니다.
join
및 명령을 결합해 보았지만 awk
원하는 출력을 얻지 못했습니다.
join -j 2 -o 1.1 1.2 2.1 2.2 text1.txt text2.txt
awk 'BEGIN {FS = OFS = "/t"}
NR == FNR {f[$1] = $0 next}
{print f[$1] $0}' text2.txt text1.txt
join
또는 에서도 작업 sort
할 수 없습니다.sh
ksh
bash
답변1
join
다음과 함께 사용하세요 awk
:
join -t $'\t' -j 1 -a 1 -a 2 -e 0 -o 0,1.2,0,2.2 file1 file2 | \
awk 'OFS="\t"{$5=$2-$4}NR==1{$5="Difference"}1'
어디:
-t
입력 및 출력 구분 기호 설정-j
두 파일에 조인 필드 정의-a
두 파일에서 페어링할 수 없는 줄을 인쇄하려면 강제로 연결하세요.-e
빈 필드를 채우는 방법 지정-o
출력 형식 입니다awk
먼저 출력 필드 구분 기호를OFS
탭으로 설정하십시오.- 5번째 필드
$5
는 2번째와 4번째 필드를 기반으로 계산됩니다. - 파일의 첫 번째 줄인 경우 다섯 번째 필드를 제목으로 형식을 지정합니다.