次のサンプルデータがあります
EMP_ID|EMP_NAME|AGE|SALARAy
123456|XXXXXXXXX|30|10000000
レコードを複数のレコードに分割してヘッダーを取得する方法はありますか?サンプル出力は次のようにする必要があります。
EMP_ID|Values|HeaderName
123456|XXXXXXX|EMP_NAME
123456|30|AGE
123456|10000000|SALARY
次のコマンドを試してみました。
awk -F\| 'NR>1{for(i=2;i<=NF;i++){print $1"|"$(i)}}' records.txt
ここではヘッダー名を取得できず、EMP_IDと値のみを取得できます。
答え1
ヘッダーを取得して配列に保存します。
NR==1 { for (i=1;i<=NF;i++) h[i]=$i }
その後、単に以下を使用して追加できます。h[i]
awk -F\| '
BEGIN { print "EMP_ID|Values|HeaderName" }
NR==1 { for(i=2;i<=NF;i++) h[i]=$i }
NR>1 { for(i=2;i<=NF;i++) print $1"|"$i"|"h[i] }
' records.txt