File1とFile2という2つのファイルがあります。
File1にはヘッダーのみがあります。
Field2 Field1 Field3
そして
File2にはヘッダーとデータもあります。
Field3 Field2 Field1 ABC DEF GHI JKL MNO PQRS
次のファイルで2つのヘッダーフィールドを同期する必要があります。
ファイル1.txt
Field1 Field2 Field3
ファイル2.txt
Field1 Field2 Field3
GHI DEF ABC
PQRS MNO JKL
ベストアンサー1
awk '
NR==FNR {
# read the first file, save the desired field order
n = split($0, field_order)
next
}
FNR==1 {
# read the first line of the second file
# store the mapping of field name to existing column number
n = split($0, header)
for (i=1; i<=n; i++)
current_field_order[header[i]] = i
}
{
# output the fields in the desired order
for (i=1; i<=n; i++)
printf "%s%s", $(current_field_order[field_order[i]]), OFS
print ""
}
' file1 file2
これにより、列の並べ替えが中断されます。出力をパイプしてきれいに| column -t
することができます。