行のn番目の数字を調整する方法は?

行のn番目の数字を調整する方法は?

文書の内容:

RANDOM TEXT    num1=400    num2=15    RANDOM TEXT
RANDOM TEXT    num1=300    num2=10    RANDOM TEXT
RANDOM TEXT    num1=200    num2=5    RANDOM TEXT

次のように、各行の各num2に対して5を減算したいと思います。

RANDOM TEXT    num1=400    num2=10    RANDOM TEXT
RANDOM TEXT    num1=300    num2=5    RANDOM TEXT
RANDOM TEXT    num1=200    num2=0    RANDOM TEXT

純粋なbashが好まれますが、他のGNUツールがより良い作業をしている場合は大きな問題ではありません。

ベストアンサー1

使用awk:

awk '{ for (i=1;i<=NF;i++) { if ($i ~ /num2=/) {sub(/num2=/, "", $i); $i="num2="$i-5; print} } }' file

次に、各行の各列を繰り返しながら、含まれている列を見つけますnum2=。列を見つけたら、次の操作を行います。

  1. num2=削除 -sub(/num2=/, "", $i)
  2. 列を次のようにオーバーライドしますnum2={oldnum-5}$i="num2="$i-5
  3. この行を印刷してください -print

おすすめ記事