awk はフィールドに値を追加します。

awk はフィールドに値を追加します。

次のように、私のファイルのフィールドに値を追加する方法のアイデアを探しています。

line(001)=YR200PR1030,YR230PR1580,YR340PR2016,
          YR450PR2450,
          PRF3500,
line(002)=YR200PR452,YR230PR740,YR340PR1500,
          YR450PR2120,
          PRF2800,

YRとPRの間のすべての値に32個の値を追加したいと思います。たとえば、次のようになります。
YR200PR1030-->YR232PR1030

どんなアイデアがありますか?ありがとうございます。

ベストアンサー1

YRとの間にある数値をそれぞれ増やす必要がある場合は、次のことを試すことができますPR

$ perl -pe 's/YR(\d+)PR/sprintf("YR%sPR",$1 + 32)/eg' file
line(001)=YR232PR1030,YR262PR1580,YR372PR2016,
          YR482PR2450,
          PRF3500,
line(002)=YR232PR452,YR262PR740,YR372PR1500,
          YR482PR2120,
          PRF2800,

または、その場所でファイルを編集します。

perl -i -pe 's/YR(\d+)PR/sprintf("YR%sPR",$1 + 32)/eg' file

方法-pe-e"によって提供されたスクリプトを適用した後、各行を印刷します。スクリプト自体は、"グローバル"フラグを持つs/old/new/代替演算子()にすぎません/g(行内のすべての項目と一致)、次の場所/eでコードを右に実行できます。 end 、正規表現は\d+a と a() の間の 1 つ以上の数字と一致し、数字を としてキャプチャし、置換はキャプチャされた数字に 32 を加えた値を出力します。YRPR$1YRPR

おすすめ記事