
다음 파일이 있습니다. 그러나 헤더는 다른 행에 있고 헤더 값은 아래에 인쇄됩니다. 단일 행의 모든 헤더와 특정 헤더의 값을 해당 헤더 아래에 인쇄하고 싶습니다.
입력하다
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
번째 행에는 헤더가 있고 다른 행에는 데이터가 있습니다.