Vim
我們如何刪除所有數字和 .(點)在使用vim的文件中的所有行中?
我們如何刪除所有數字和 . (點)在使用 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-patterns
見vim
。這不僅會更短,而且也適用於
0-9
不是數字或不是唯一數字的語言環境。
\v
您可以通過在正則表達式中使用來啟用 vim非常神奇的正則表達式模式,使其更短(並且 IMO 更具可讀性) :%s/\v\d+(\.\d+)?//g
另請參見
:help magic
。vim
順便說一句,更簡單的正則表達式(如
:%s/[0-9.]\+//g
)也將刪除用作標點符號的句點(例如,在句子的末尾,或省略號...
)。