2012-01-27 8 views
-1

テキストがたくさんあるファイルがあるとします。ある時点で、そのファイル内の次のテキストを検索したかったのです。しかし、このテキストは正確ではありません。実際には、 "service surfaceflinger"で始まり、 "zygote"で終わった行があった行から始まる、複数の行である可能性のあるテキスト "段落"を探したいと思っていました。Regex(Linuxの場合)複数の行にわたり、先頭と末尾の単語だけを気にする

これに遭遇する検索のLinux正規表現とは何ですか?

service surfaceflinger /system/bin/surfaceflinger 

    class main 

    user system 

    group graphics 

    onrestart restart zygote 
+0

チェックアウトこのスレッド [http://stackoverflow.com/questions/3717772/regex-grep-for-multi-line-search-needed][1] [1]:HTTP ://stackoverflow.com/questions/3717772/regex-grep-for-multi-line-search-needed –

+0

「段落」はスペースで区切られていますか?だから、「サービスサーフライナー」はいつも始まりでしょうか? –

+0

初めての投票です。正規表現では、あなたが試したすべてのパターンを列挙するのは難しいです。私は10または12の異なる正規表現を試しました。多分これはダブです。それについては、私は申し訳ありません。 –

答えて

3

の末尾にマッチ。

+0

私はこの回答の「sed」バージョンを使用しましたが、それはテキストを見つけるために働いていました。ここで、単に「無効」と言ったテキストの後に行を追加したいとします。私は sed -n '/^service surfaceflinger /、/ zygote $/a \ 'ファイル名 を無効にしましたが、そのテキストの各行の間に「disabled」の文字列を追加しました。そのテキスト。 –

+0

@JoeC:それでは別の質問です。そのように質問されるべきです! – Johnsyweb

+0

さて、私はすでにこのようなことについて質問して下さったので、私はロープロファイルを維持しようとしていました。しかし、とにかく先端のためのthx。 ;) –

2

このような何か試してみてください:

(?ms)はすべてドット・モード(.マッチ任意の文字)

^マッチはの開始、マルチラインとをオン:

(?ms)^service surfaceflinger.*?zygote$ 

をライン

awk '/^service surfaceflinger/,/zygote$/' file_with_a_lot_of_text 

sed使用:

sed -n '/^service surfaceflinger/,/zygote$/p' file_with_a_lot_of_text 

推奨読書:sed & awk.*?マッチ、任意の数の文字が遅延し

$awkを使用してライン

関連する問題