![根据特定键将行转换为列](https://linux22.com/image/58932/%E6%A0%B9%E6%8D%AE%E7%89%B9%E5%AE%9A%E9%94%AE%E5%B0%86%E8%A1%8C%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%88%97.png)
我有如下文件。但标题位于不同的行中,标题值打印在下面。我希望单行中的所有标题和特定标题的值打印到相应标题的下方
输入
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
第一行带有标题,其他行带有数据。