次の形式のデータがあります。
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を追加してください)。
一般に、固定幅フィールドを持つ行を解析するには、FIELDWIDTHS
GNUの特殊変数を参照してくださいawk
。