簡體   English   中英

在vi / vim中,為特定的數字列添加整數

[英]In vi/vim, adding a integer for a specific digital column

我有一個文件,例如,如下:

HEAD 100 ABC 12 24 12.5
HEAD 101 ABC 10 20 11.9
HEAD 102 ABC 13 18 15.4
HEAD 103 ABC 14 21 17.6
HEAD 104 ABC 16 23 13.4

如何在每行的第2列中添加一個數字(如5)? 這將是

HEAD 105 ABC 12 24 12.5
HEAD 106 ABC 10 20 11.9
HEAD 107 ABC 13 18 15.4
HEAD 108 ABC 14 21 17.6
HEAD 109 ABC 16 23 13.4

我嘗試在vi命令模式下執行此操作,

:%s/\d\+/\=submatch(0)+1/g

但是它將行中的每個數字相加。

謝謝!!!

您距離很近,但是只是不使用全局匹配,而是使用:

:%s/\d\+/\=submatch(0)+5/

這只會替換第一個匹配項(在這種情況下為所需的第二列)。

輸出:

HEAD 105 ABC 12 24 12.5
HEAD 106 ABC 10 20 11.9
HEAD 107 ABC 13 18 15.4
HEAD 108 ABC 14 21 17.6
HEAD 109 ABC 16 23 13.4

或者,在可視塊模式( Ctrl-V )中,選擇要遞增的數字:

HEAD 100 ABC 12 24 12.5                                           
HEAD 101 ABC 10 20 11.9                                           
HEAD 102 ABC 13 18 15.4                                           
HEAD 103 ABC 14 21 17.6                                           
HEAD 104 ABC 16 23 13.4

然后按以下鍵: 5 Ctrl-A


可視化方法很快速,但是舉另一個例子,假設您需要輸出:

HEAD 150 ABC 12 24 12.5                                           
HEAD 151 ABC 10 20 11.9                                           
HEAD 152 ABC 13 18 15.4                                           
HEAD 153 ABC 14 21 17.6                                           
HEAD 154 ABC 16 23 13.4 

將第5列的數字加5。 您可以使用帶有50 Ctrl-A的可視方法。 或使用特定列匹配( \\%c ):

%s/\%>6c\%<8c\d/\=+5/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM