2

私のFileAコンテンツは次のとおりです。

 LetterA     LetterM  12
 LetterB     LetterC  45
 LetterB     LetterG  23

FileB内容は次のとおりです。

 LetterA    23   43    LetterZ
 LetterB    21   71    LetterC

FileAオリジナルのエントリとif$2-$3からのエントリを書きたいです。 このような出力の場合: FileB
FileA $1 = FileB $1 && FileA $2 = FileB $4

 LetterB     LetterC  45   -50

bashループを使用して実行できます

 while read ENTRY
 do
    COLUMN1=$(cut -f 1 $ENTRY)
    COLUMN2=$(cut -f 2 $ENTRY)
    awk -v COLUMN1="$COLUMN1" -v COLUMN2="COLUMN2" -v ENTRY="$ENTRY"   
         '($1==COLUMN1 && $4==COLUMN2) 
         {print ENTRY,$2-$3}' FileB
 done < FileA 

ただし、このループは遅すぎます。ループせずに awk を使用してこれを行う方法はありますか?
複数の入力ファイルを取得するには->それらのコンテンツを一致させます->必要な出力を印刷します。

4

2 に答える 2