[问题] 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