私の行は次のとおりです
123-456-789 12.34.56 example
12を選択して2を追加してから、行全体をそのまま印刷したいと思います。したがって、結果は次のようになります。
123-456-789 14.34.56 example
私は次のような奇妙な表現を持っています。
awk 'BEGIN {FS="[ .]"}{$2=$2+2}{print}'
しかしそれは私に与えた
123-456-789 14 34 56 example
ドットが消えてスペースに置き換えられました。
ベストアンサー1
awk '{ split($2,a,"\."); a[1]+=2; $2=sprintf("%d.%d.%d", a[1],a[2],a[3]) } 1' file
または、
awk '{ split($2,a,"\."); $2=sprintf("%d.%d.%d", a[1] + 2,a[2],a[3]) } 1' file
行をスペースで区切られたフィールドのセットとして読み込みます。 2番目のフィールドをポイントに分割し、結果の最初の部分に2を追加します。次に、結果レコードを印刷する前に、2番目のフィールドをドットで区切られた3つの整数に再フォーマットします(印刷は1
ショートカットの終わりにある項目によって実行されます{ print }
)。
これは、2番目のレコードが実際に3つの点で区切られた整数であることを知っていると仮定します。
何が起こっているのか、非常に明確で理解しメンテナンスしやすいので、こうすることです。