0

f1.txt と f2.txt の 2 つのファイルを比較し、一致するものと一致しないものを取得する必要があります。この場合、両方のファイルの最初のフィールドを一致させようとしています。最初に f2.txt の 2 番目のフィールドを印刷し、次に f1.txt の行全体を印刷します。また、f2.txt で一致が見つからない場合は、「Not Found」と表示してから、f1.txt の行全体を出力します。

F1.txt

1;2;3;4;5;6;7;8
1a;2;3;4;5;6;7;8
1b;2;3;4;5;6;7;8
2b;2;3;4;5;6;7;8

F2.txt

1;First
1a;Firsta
1b;Firstb

望ましい出力:

First;1;1;2;3;4;5;6;7;8
Firsta;1a;1a;2;3;4;5;6;7;8
Firstb;1b;1b;2;3;4;5;6;7;8
Not Found;2b;2;3;4;5;6;7;8

一致は取得できますが、非一致は取得できません

awk -F ";" -v OFS="";"" "NR==FNR{a[$1]=$2;next}a[$1]{print a[$1],$0}" f2.txt f1.txt

ありがとう

4

2 に答える 2

3

これは次のことを行う必要があります。

awk -F";" 'NR==FNR{a[$1]=$2;next}{if (a[$1])print a[$1],$0;else print "Not Found", $0;}' OFS=";" f2.txt f1.txt
于 2012-10-29T05:43:52.600 に答える
0

これはとても役に立ちました。2 つのファイル間でデータを取得するように少し変更し、各ファイルには 1 つの列しかありません。

awk 'BEGIN { OFS=FS=";" } FNR==NR { array[$1]=$1; next } { print ($1 in array ? array[$1] : "Not Found"), $0 }' file1 file2
于 2013-02-28T06:12:55.857 に答える