次のファイルがあります。ただし、ヘッダーは別の行にあり、ヘッダー値は下に印刷されます。単一行のすべてのヘッダーと特定のヘッダーの値をそのヘッダーの下に印刷したいと思います。
入力する
name1 name2 name3 name4
XXXX IN SERVICE 22905 dhr
Name5
123445678
12345687
Nam6 Name7 Name8 Name9 name10
firstin_firstout godwith 1234 17 david
Name11 Name12
dhame Dame2
rame Ragha
出力
name1 name2 name3 name4 Name5_1 Name5_2 Nam6 Name7 Name8 Name9 name10 Name11_1 Name11_2 Name12_1 Name12_2
XXXX IN SERVICE 22905 dhr 123445678 12345687 firstin_firstout godwith 1234 17 david dhame rame Dame2 Ragha
答え1
次の一部を保存してください。script.name
#!/usr/bin/awk -f
FNR == 1 {
split ($0,N," ")
r=""
next
}
{
if (FNR>2) r="_" FNR-1
for (i in N) V[N[i] r]=$i
}
FNR == 3 {
for (i in N) {
V[N[i]"_"1]=V[N[i]]
delete V[N[i]]
}
}
END {
for (n in V) printf("%s ", n)
print ""
for (n in V) printf("%s ", V[n])
print ""
}
そして、次のように動作します。
awk -f sript.name input_files | column -t
最初のinput_file
行にはヘッダーがあり、他の行にはデータがあります。