Text-Processing
如何調整一行中的第 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 工具做得更好,那也沒什麼大不了的。
使用
awk
:awk '{ for (i=1;i<=NF;i++) { if ($i ~ /num2=/) {sub(/num2=/, "", $i); $i="num2="$i-5; print} } }' file
這將遍歷每一行的每一列,尋找包含
num2=
. 當它找到該列時,它將:
- 刪除
num2=
-sub(/num2=/, "", $i)
- 將該列重新定義為
num2={oldnum-5}
-$i="num2="$i-5
- 列印行 -
perl:
perl -pe 's/(?<=num2=)(\d+)/$1 - 5/e' file
要將內容儲存回文件中:
perl -i -pe ...