2017-12-04 1 views
2
cat file1.txt 
cheng 600 
huang 500 
pan 400 
yin 300 

cat file2.txt 
600 a 
300 c 

, wenn ich den Befehl ausführen:Bash-Shell zwei Datei Spiel erfolgreich, aber Ausgang falsch

awk 'NR==FNR{a[$1]=$2;next}($2 in a){print $1,$2,a[$1]}' f2.txt f1.txt 

Der Ausgang ist unter:

cheng 600 
yin 300 

Aber ich erwartete so sein sollte:

cheng 600 a 
yin 300 c 

was ist los?

Antwort

1

Sie verwenden können:

awk 'NR==FNR{a[$1]=$2; next} $2 in a{print $0, a[$2]}' f2.txt f1.txt 

cheng 600 a 
yin 300 c 
+1

ich sehe, sollte ich den Druckdialog mit eidt {$ 1, $ 2, a [$ 2] drucken}, kein [$ 1]. wie unten: awk 'NR == FNR {a [$ 1] = $ 2; nächste} ($ 2 in a) {print $ 1, $ 2, a [$ 2]}' f2.txt f1.txt –

Verwandte Themen