我有一個如下所示的文件。正則表達式在vim中查找和替換:將.0添加到數字
1 1 0 # 1
6 1 0 # 2
8 1 0 # 3
10 1 0 # 4
12 1 0 # 6
如何將.0添加到除#號後面的數字之外的所有數字。我想這應該不是太難的事情用正則表達式,但我的正則表達式的知識太生疏..
我有一個如下所示的文件。正則表達式在vim中查找和替換:將.0添加到數字
1 1 0 # 1
6 1 0 # 2
8 1 0 # 3
10 1 0 # 4
12 1 0 # 6
如何將.0添加到除#號後面的數字之外的所有數字。我想這應該不是太難的事情用正則表達式,但我的正則表達式的知識太生疏..
如果#
後,你的號碼沒有經過他們的空間,你可以使用:
:g/\([0-9]\+\) /s//\1.0 /g
採用()
創建,你可以稱之爲\D
在替換文本組,其中D
是搜索字符串內組的位置。這會給你:
1.0 1.0 0.0 # 1
6.0 1.0 0.0 # 2
8.0 1.0 0.0 # 3
10.0 1.0 0.0 # 4
12.0 1.0 0.0 # 6
如果他們做有照顧他們的空間(這你似乎有),你會得到:
在這種情況下1.0 1.0 0.0 # 1.0
6.0 1.0 0.0 # 2.0
8.0 1.0 0.0 # 3.0
10.0 1.0 0.0 # 4.0
12.0 1.0 0.0 # 6.0
你可以再做:
:g/\.0\( *\)$/s//\1/g
要修復它。
假設它是良好的,使用sed
這應該工作。
編輯:只是爲了澄清,vim
沒有作爲標籤附加到這個問題,當我看到它。
sed 's/\([0-9]\+\) \+\([0-9]\+\) \+\([0-9]\+\)/\1.0 \2.0 \3.0/' file
隨着VIM:
:%s/\v(#.*)@<!\d+/&.0/g
說明:\v
=非常魔法(見help \v
),@<!
匹配零寬度,如果前一原子不匹配之前什麼如下(見help \@<!
)。模式的其餘部分用相同的字符串替換1或多個數字的字符串,然後用.0
。
這一個是美麗的。人們需要承認這一點。你從我那裏得到一個投票。 – Anders 2010-07-26 07:55:46
這是做到這一點的正確方法 – cozyconemotel 2017-08-04 03:35:46
你也可以試試這個 sed's/[0-9]/& .0/g'| SED的/ 0.0 [] * $ // G'
首先SED增加0.0所有數字和第二個刪除您使用要做到這一點末尾的.0
什麼語言?正則表達式語法在某些語言中不同。 – BoltClock 2010-07-26 07:31:22
vim(搜索並替換) – Nils 2010-07-26 07:33:18