作者:
bbogod 2016-04-24 10:59:29假如
test1 0.1 a
test2 0.15 b
test3 0.12 c
在vim底下我要怎麼變成下方這樣
(把第二列的數值都各加0.1上去?)
test1 0.2 a
test2 0.25 b
test3 0.22 c
因為對linux還不夠熟,希望大家能幫助我
作者:
Neisseria (Neisseria)
2016-04-24 11:59:00gawk '{ $2 += 0.1; print; }' 然後調 tab/space
cat data.txt | awk '($2+=0.1)' 不用 print 喔~ ^_^
作者:
bbogod 2016-04-24 16:59:00感謝樓上們的解答,我原本以為要用expr去寫
在 vim 裡頭執行就可以了 :%!awk '$2+=0.1'要保持原來的空白,用awk -F去界定。預設是一個空白BTW,用 awk 就無需用 cat 了。直接給它檔案。
作者:
Neisseria (Neisseria)
2016-04-24 20:09:00我還以為 AWK 程式一定要包在大括號內剛試了一下,沒加括號也可以跑
action 的部份才要大括號。print 是 action,但它是預設的動作。
是的... 所以是在條件式偷做運算, 算是偷吃步...
這個不是偷吃步喔!那些運是針對 pattern 的部份所做的修正,和 action 的部份無關。在命令列使用 awk常常會有這種修正,修正後再進入 action。在這個例子就是修正後,由 print 印出每一行。