ファイルが2つあり、最初の行は参照用のヘッダー行です。
file1
userId userContact parentId parentContact 200 0900200 100 - 201 0900201 100 - 300 0900300 101 -
file2
userId userContact parentId parentContact 100 0900100 100 - 101 0900101 100 -
4番目の列では、inをfile1
検索してofをfromに置き換える必要があるため、出力は次のようになります。$3
file1
$1
file2
$2
file2
$4
file1
output
userId userContact parentId parentContact 200 0900200 100 0900100 201 0900201 100 0900100 300 0900300 101 0900101
awk
より速いので好む。
ベストアンサー1
使用join
(ソートされた入力ファイルが必要なので、ソートされた入力を渡しました)。
join -1 3 -2 1 -o 1.1,1.2,1.3,2.2 <(sort -k3 file1) <(sort file2)
200 0900200 100 0900100
201 0900201 100 0900100
300 0900300 101 0900101
を使用すると、Joinは-1 3
最初の入力ファイル(file1)のキーとして3番目の列を選択し、2番目の入力ファイル(file2)のキーとして1番目の列を-2 1
選択して-o
これらの列を出力します。<ファイル番号>.<列番号>。
入力内容がタブ区切りファイルの場合は、-t$'\t'
結合コマンドにも追加してくださいsort -k3 file1
。
ヘッダー行を印刷するには、head -n1 file1;
結合の前に追加します。
または以下を使用してくださいawk
。
awk 'NR==FNR{ parentId[$1]=$2; next }
FNR>1 { $4=parentId[$3] }1' file2 file1