2

私はgvimとgrepを使用してUnixを使用しています。

問題1:

次のパターンのxmlファイルを検索する必要があります。

< sample1>
< /sample1>

したがって、問題はパターンが線を横切ることです。私はgvimとgrepを初めて使用し、正規表現/特殊文字の知識を使用してこれを理解できませんでした。

問題2:

もう1つの問題は、2行目のより小さい記号(<)の前に空白があることです。すなわち

< sample1>
 < /sample1>

誰かがこれらのパターンを検索する方法を提案できますか?

4

4 に答える 4

3

Vimでこのパターンを検索するには/、通常モードでコマンドを使用します。

/< sample>\n< \/sample1>

/2行目の文字は、その文字を使用してエスケープする必要があることに注意してください\

于 2012-08-08T15:04:41.670 に答える
2

使用する1つの方法sed

sed -n '/< sample1>/,/< \/sample1>/p' file.txt

編集:

セパレータを除外する場合:

sed -n '/< sample1>/,/< \/sample1>/ {//!p}' file.txt
于 2012-08-08T15:00:20.293 に答える
0

< /sample1>コマンドモードで入力するだけでパターンを検索できます。

/< \/sample1>

空白があってもかまわないので、2番目の問題はわかりません。検索スラッシュの後に空白を入れるだけです。

/ < \/sample1>

私はこれをVimでテストしたところ、動作しました。お役に立てば幸いです。

乾杯。

于 2012-08-08T15:10:03.160 に答える
0

ViM

\n検索パターン内のViMで使用できます。

問題1:

/<\ sample1>\n<\ \/sample1>

問題2:

/<\ sample1>\n\ <\ \/sample1>

より正確にし、次のようなケースを無視したい場合:

blah blah < sample1>
 < /sample1> blah blah

行の最初と最後を一致させるように明示的に要求できます。

問題2:

/^<\ sample1>\n\ <\ \/sample1>$

タグの前の空白の量が重要でない場合は、次を使用できます\s*

/^\s*<\ sample1>\n\s*<\ \/sample1>$

grep

grepの使用に興味がある場合は、悪いニュースがあります。grepは複数行を実行しません。ただし、この質問を見てpcregrep -M、問題を解決できることを学ぶことができます。

于 2012-08-08T15:13:56.877 に答える