と複数行印刷:パターンは/*
で始まり、*/\n(override\s+)public
で終わる、このような何かやってみました を:私はどのようにあなたを求めていますマッチと私は次のように一致するようにしようとしているSED
sed -n '/\/\*/,/\*\/\n(override\s+)public/p' file
そして、ここをそれを正しく書くには
grepやawkでできることなら、それはオプションです。perlで1つのライナーであれば、それでも問題ありません。
PS。私はsed正規表現の構文がわからないが、\s
は空白であることを理想的には[\ \t\r\n]
とする。
EDIT:
はあなたが持っていると仮定します。
/**
* Some comment goes here
*/
override public function ...
/**
* A comment for another function
*/
public function ...
発現は、これらの二つの結果あなたを与えるだろう
:
/**
* Some comment goes here
*/
override public
と
/**
* A comment for another function
*/
public
EDIT: 誰かが下の正規表現をsedに変換することができれば、それは仕事をするでしょう。
/\/\*(!?\*\/)*\*\/\s*(overrides\s+)?public/gm
mフラグは、正規表現が複数行であることを意味します。つまり、ネガティブ先読みグループも行末に一致します。しかし、それは可能ではないですが、一致する行が終了した場合は、その後、式は次のようになり、まだ可能です:
/\/\*((!?\*\/)*$)*\*\/[\r\n\t\ ]*(overrides[\r\n\t\ ]+)?public/g
行100と500が "/ *"で始まり、行200と600が "public override"で始まる場合(これら2つの単語の間に空白がある場合) 600、 "public"で終わる? – Beta
'sed'は一度に1行しか処理できません。複数の行にまたがるパターンが必要な場合は、以前のllnesがパターンの開始と一致するかどうかを追跡するスクリプトを作成する必要があります。 – tripleee