特定の列の空行を値で埋めます。

特定の列の空行を値で埋めます。

次の形式のデータがあります。

2342 1
6473 2
7463 2
3647
2734 1
9343

2番目の列に値がない行は、その位置が空です(つまり、スペース、タブなどはありません)。 2列の空のスロットに「-9」を入れる簡単なコマンドを探しています。

(デフォルトでは、awk列2の行が0でないことを確認し、その場合は「-9」を追加するコマンドです。)

拡張された例(より多くの列を含むデータ、一部には欠落値が含まれています)最後の列にのみ「-9」を追加したい(つまり、他の列は欠落している可能性があります)。

2342 0 12 1
6473   13 2
7463 0 14 2
3647 0  
2734 0    1
9343 0 16 

ベストアンサー1

データが固定幅列に表示される場合は、次のことができます。

最初のケース:

sed 's/^.\{4\}$/& -9/'

" -9"4文字の行に追加)。

2番目のケース:

sed -e '/.\{11\}/b' -e 's/$/          /;s/\(.\{10\}\).*/\1-9/'

(最大10個のスペースを追加し、11文字未満の行の場合は-9を追加してください)。

一般に、固定幅フィールドを持つ行を解析するには、FIELDWIDTHSGNUの特殊変数を参照してくださいawk

おすすめ記事