viで。*を置き換える

次に示すように、「ピリオドアスタリスク」のすべての出現箇所を置き換える必要があります:

blah blah .*:.*:.* blah blah 

with:

[0-9][0-9]:[0-9][0-9]:[0-9][0-9] 

最終結果は次のようになります:

blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah 

次のさまざまなバリエーションを試しましたが、機能しませんでした:

%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g 

回答

「ピリオドアスタリスク」がコロンで区切られて3回繰り返される行の例を示しました。データが常にそのように見える場合は、 AlexPの回答。しかし、あなたの質問は、「ピリオドアスタリスク」のすべての出現箇所を置き換える必要があると述べています。そのステートメントの場合問題は正確です。

:%s/\.\*/[0-9][0-9]/g 

を使用する必要があります。これにより、3つのグループに表示されない場合でも、「ピリオドアスタリスク」が検出されて置き換えられます。

回答

Vimの場合:

sedの場合:sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"

  • %は、すべての行に置換を適用することを意味します。 sedでは必要ありません。デフォルトでは、コマンドはすべての行に適用されます。
  • \.はピリオドです。裸の.は任意の文字を意味します。
  • \*はアスタリスクです。裸の*は、先行するアトムが0個以上あることを意味します。

回答

Vimのパターンにnomagic修飾子を使用する:

:%s/\M.*/[0-9][0-9]/g 

\Mは、パターン内の.*の両方の特殊性を削除します。

を参照してください。 Vimの:help magic

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です