すべての数字をどのように削除できますか? 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  

答え1

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

このデフォルトの正規表現(BRE)検索と置換操作は、1つ以上の数字(オプションでドットと1つ以上の数字の後に続く)を削除します。

vimPCREは\d同義語としても理解されるため、[[:digits:]]次のように短縮できます。

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

ところで、を:help perl-patterns参照してくださいvim

0-9これは短いだけでなく、数値ではなく、固有の数値ではないロケールでも機能します。

\vvimを正規表現に使用すると、vimを短くする(私の考えでは読みやすくする)ことができます。素晴らしい正規表現パターン:

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

:help magicでも参照してくださいvim

ちなみに(例えば:%s/[0-9.]\+//g)のような単純な正規表現は、句読点として使用されたピリオド(文の末尾や省略記号など...)も削除します。

答え2

tr正規表現を使用してこれを実行できますが、必要な文字範囲を削除する方が簡単だと思います。

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

コロンは「コマンドモード」を開始します。%「フルバッファ」を意味し、!「次のシェルコマンドで指定された範囲(フルバッファ)をフィルタリングします(つまり、コマンドの標準入力に入力し、Vimからコマンドの標準出力に置き換えます)」を意味します。

答え3

|2つの代替コマンドを1つのシンボルにリンクできます。したがって、最初にすべての数字(\d)を削除してから、すべてのピリオド()を削除できます\.

:%s/\d//g | %s/\.//g

単一の代替コマンドでは、パイプを "OR"演算子として使用することもできます。

:%s/\d\|\.//g

関連情報