次のテキストファイルの「空白」列を埋めるようにAWKを取得しようとしています。
AWK NF を使用して最長行を見つけ、その列に値がない行を確認する基本的なアイデアです。次に、各空の列にx回N / Aを追加します。
この例にはスペースで区切られた入力がありますが、文字で区切られたファイルに簡単に変更できます。
入力は次のとおりです。
aaa bbb ccc ddd
aaa
aaa bbb ccc
hhh ppp uuu
www yyy hhh
hhh 111 333 yyy ooo hyy uuuioooy
そして、出力はファイルの最大列数を計算し、空の列にN / Aを追加します。
aaa bbb ccc ddd N/A N/A N/A
aaa N/A N/A N/A N/A N/A N/A
aaa bbb ccc N/A N/A N/A N/A
hhh ppp uuu N/A N/A N/A N/A
www yyy hhh N/A N/A N/A N/A
hhh 111 333 yyy ooo hyy uuuioooy
ベストアンサー1
最も簡単な方法は、2つのステップで行うことです。まず、最も広い線を探します。
max=$(awk 'max < NF { max = NF } END { print max }' infile)
次に、別の列を埋めるときにそれを入力として使用します。
awk -v max=$max '{ for(i=NF+1; i<=max; i++) $i = "N/A"; print }' infile