5

特定のパターンの後に特定の数の文字を編集する必要がある大きなファイルがあります。これは私のファイルの一部の例です:

@IB4UYMV03HCKRV
100 100 100 100 100 100 100 100 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40

@IB4UYMV03GZDSU
100 100 100 100 100 100 100 100 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40 40 40 40 40 40 "

の後に100 100 100 100 100 100 100 100、次の 12 を削除したいと思い40ます。これは、スペースを含む 36 文字です。検索と置換を使用してみましたが、文字は必ずしも40ではなく、任意の 2 桁の数字である可能性があります。

パターンの後に 36 文字を削除する方法はありますか?

4

1 に答える 1

9

カーソルを412 秒の文字列の最初に置くと、1 文字を 36 回削除する通常モードで40実行できます。36x

または、通常のパターンがある場合は、次の置換を使用できます。

:%s/^\v(100 ){8}\zs(\d\d ){12}/

内訳:

Ex Command:
%              All lines
s              Substitute

Pattern:
^              Anchor to start of line
\v             Very magic mode, to avoid excessive slashes
(100 ){8}      8 instances of the string "100 "
\zs            Start selection
(\d\d ){12}    12 instances of the string "\d\d " (i.e., \d is any digit)

Replacement:
               Nothing (i.e., remove it)

「選択」は最終的に置き換えられる部分です。パターンがどのように終了するかは気にしないため、一致\ze(終了選択) がないことに注意してください。

于 2013-09-13T11:05:06.250 に答える