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