Vim

我們如何刪除所有數字和 .(點)在使用vim的文件中的所有行中?

  • November 20, 2021

我們如何刪除所有數字和 . (點)在使用 vim 的文件中的所有行中?例如,我們有一個文件有以下內容。

afsdfsd 0.98096764
afsdfd 0.98196765
0.98096764
afsadfsd 0.98096764
adfsd 0.98096764
aadfsd 0.98096425
0.98096425
afsadfsd 0.98096761

` 想知道我們如何在 vim 中刪除所有數字和數字內的點(在我的文件中,點僅在數字內退出)

afsdfsd  
afsdfd  

afsadfsd  
adfsd  
aadfsd  
 
afsadfsd  

你可以用正則表達式來做到這一點,但我認為使用它tr來刪除你想要的字元範圍更簡單:

:%!tr -d '.[0-9]'

冒號啟動“命令模式”。意思是“%整個緩衝區”;意思是!“通過以下 shell 命令過濾指定的範圍(整個緩衝區)(即在命令的標準輸入上輸入它,並在 Vim 中用該命令的標準輸出替換它)。”

:%s/[0-9]\+\(\.[0-9]\+\)\?//g

此基本正則表達式 (BRE) 搜尋和替換操作刪除一個多位數字,可選地後跟一個點和一個或多個數字。

vim也將 PCRE 理解\d為 的同義詞[[:digits:]],因此您可以通過以下方式縮短一點:

:%s/\d\+\(\.\d\+\)\?//g

順便說一句,:help perl-patternsvim

這不僅會更短,而且也適用於0-9不是數字或不是唯一數字的語言環境。

\v您可以通過在正則表達式中使用來啟用 vim非常神奇的正則表達式模式,使其更短(並且 IMO 更具可讀性) :

%s/\v\d+(\.\d+)?//g

另請參見:help magicvim

順便說一句,更簡單的正則表達式(如:%s/[0-9.]\+//g)也將刪除用作標點符號的句點(例如,在句子的末尾,或省略號...)。

引用自:https://unix.stackexchange.com/questions/678319