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

看板Linux作者時間9年前 (2016/04/24 10:59), 編輯推噓2(2013)
留言15則, 4人參與, 最新討論串1/1
假如 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還不夠熟,希望大家能幫助我 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.232.43.133 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1461466772.A.5F0.html

04/24 11:59, , 1F
gawk '{ $2 += 0.1; print; }' 然後調 tab/space
04/24 11:59, 1F

04/24 12:49, , 2F
cat data.txt | awk '($2+=0.1)' 不用 print 喔~ ^_^
04/24 12:49, 2F

04/24 16:59, , 3F
感謝樓上們的解答,我原本以為要用expr去寫
04/24 16:59, 3F

04/24 19:37, , 4F
在 vim 裡頭執行就可以了 :%!awk '$2+=0.1'
04/24 19:37, 4F

04/24 19:39, , 5F
要保持原來的空白,用awk -F去界定。預設是一個空白
04/24 19:39, 5F

04/24 19:40, , 6F
BTW,用 awk 就無需用 cat 了。直接給它檔案。
04/24 19:40, 6F

04/24 20:09, , 7F
我還以為 AWK 程式一定要包在大括號內
04/24 20:09, 7F

04/24 20:10, , 8F
剛試了一下,沒加括號也可以跑
04/24 20:10, 8F

04/24 20:27, , 9F
action 的部份才要大括號。print 是 action,但它是
04/24 20:27, 9F

04/24 20:27, , 10F
預設的動作。
04/24 20:27, 10F

04/24 22:14, , 11F
是的... 所以是在條件式偷做運算, 算是偷吃步...
04/24 22:14, 11F

05/03 09:24, , 12F
這個不是偷吃步喔!那些運是針對 pattern 的部份所
05/03 09:24, 12F

05/03 09:24, , 13F
做的修正,和 action 的部份無關。在命令列使用 awk
05/03 09:24, 13F

05/03 09:25, , 14F
常常會有這種修正,修正後再進入 action。在這個例子
05/03 09:25, 14F

05/03 09:25, , 15F
就是修正後,由 print 印出每一行。
05/03 09:25, 15F
文章代碼(AID): #1N73QKNm (Linux)
文章代碼(AID): #1N73QKNm (Linux)