sed
またはawk
を使用した単純なbashスクリプトを使用して、File1
の指示に従って、File3
の行全体を新しいFile2
にコピーすることは可能ですか?
File1: /*two or more columns*/
AC 456324
DC 689712
GH 123677
KL 236587
File2: /*one column*/
AC
DC
File3:
AC 456324
DC 689712
私は実際にPython辞書を使用してこれを実行していますが、簡単な方法を知っているかどうか疑問に思いました。
grep
を使用
grep -Ff File2 File1
awk
を使用
awk 'NR==FNR {a[$1]++;next} a[$1]' File2 File1
join
を使用して、特定の列が両方のファイルで同じ値を持つ場合に、2つのファイルの行を結合して結合できます。入力ファイルは、その列の値でソートする必要があることに注意してください。
join File1 File2
ファイルがソートされていない場合、bash/ksh93/zshで:
join <(sort File1) <(sort File2)
ここで、結合するフィールドは、AC
、DC
などを含むフィールドです。結合するフィールドがFile1
の列3で、File2
の列2である場合の例を次に示します。
join -1 3 -2 2 <(sort -k3,3 File1) <(sort -k 2,2 File2)