[問題] awk如何搭配expr計算同一列的值?

作者: 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:00
gawk '{ $2 += 0.1; print; }' 然後調 tab/space
作者: rickieyang (Rickie Yang)   2016-04-24 12:49:00
cat data.txt | awk '($2+=0.1)' 不用 print 喔~ ^_^
作者: bbogod   2016-04-24 16:59:00
感謝樓上們的解答,我原本以為要用expr去寫
作者: EdwardGJLee (LGJ)   2016-04-24 19:37:00
在 vim 裡頭執行就可以了 :%!awk '$2+=0.1'要保持原來的空白,用awk -F去界定。預設是一個空白BTW,用 awk 就無需用 cat 了。直接給它檔案。
作者: Neisseria (Neisseria)   2016-04-24 20:09:00
我還以為 AWK 程式一定要包在大括號內剛試了一下,沒加括號也可以跑
作者: EdwardGJLee (LGJ)   2016-04-24 20:27:00
action 的部份才要大括號。print 是 action,但它是預設的動作。
作者: rickieyang (Rickie Yang)   2016-04-24 22:14:00
是的... 所以是在條件式偷做運算, 算是偷吃步...
作者: EdwardGJLee (LGJ)   2016-05-03 09:24:00
這個不是偷吃步喔!那些運是針對 pattern 的部份所做的修正,和 action 的部份無關。在命令列使用 awk常常會有這種修正,修正後再進入 action。在這個例子就是修正後,由 print 印出每一行。

Links booklink

Contact Us: admin [ a t ] ucptt.com