特定の単語の後のスペースをすべて削除してください。

特定の単語の後のスペースをすべて削除してください。

特定の単語の後のすべてのスペースを削除するために正規表現を使用しようとしています。私が使用するエディタはNotepad ++ですが、Unixも利用できます。

この場合、正規表現\ VALUESを実行してVALUESを強調表示できますが、それ以降のスペースを削除する方法がわかりません。

ベストアンサー1

使用sed:

$ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output

これにより、VALUES後続の空白文字(スペースまたはタブ)が必要に応じて置き換えられますVALUES。つまり、スペースは削除されます。

VALUES完全な単語に一致させることが重要な場合、whateverVALUESつまりいいえ一致させてから、前に単語境界パターン(の先頭)を挿入しますVALUES

$ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output

この回答の残りの部分でこれを維持します。

より複雑な値の場合は、VALUES値を2回入力する必要がないのが便利です。

$ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output

これによりVALUESパターンが保存され、交換時に再利用されます。

パターンがVALUESシェル変数に保存されている場合$values:

$ sed "s/\($values\)[[:blank:]]*/\1/g" input >output

これはほぼVimエディタに直接送信されます。

:%s/\(VALUES\)[[:blank:]]*/\1/

私はNotepad ++を使ったことがないので、どのように使用するかを推測するだけです。明らかにCtrl+を押し、H検索/検索とパターンの変更を入力できるはずです。

検索モード可能(VALUES)[[:blank:]]*パターンを交換するとき可能はい$1。これをテストする方法はありません。申し訳ありません。それでも機能しない場合は、[[:blank:]]試してみてください[\t ]

おすすめ記事