正規表現の一致 + 追加された行の削除

正規表現の一致 + 追加された行の削除

だから私は現在「高度な」正規表現と呼ぶことについて非常に慣れていません。ご了承ください。皆さんにとってこれは本当に簡単かもしれませんが、今すぐ私は正しい方向を提示しなければならないからです。苦軍奮闘する。

フォーラムとウェブサイト(次を含む)をクロールしました。http://www.grymoire.com/Unix/Sed.html)そして私は私が探していたものを見つけることができなかったか、少なくともその逆を見つけることができませんでした。だから私はそれを反転して、私が望む標準出力を得ました。

データ(標準入力)は次のとおりです。

C:\Users\Maison\Documents\AutoCad_dir
True
False
0
1
User
Group
Everyone
Full Access
S-I-D

C:\Users\Maison\Documents
True
False
0
1
User
Group
Everyone
Full Access
S-I-D

やりたいことは正規表現を使って各行を削除することです4 目次 以上そして次の10行(CR \ rを含む)。

残りは次のとおりです。

C:\Users\Maison\Documents
True
False
0
1
User
Group
Everyone
Full Access
S-I-D

ノート:ボリュームラベル(C:)が一定ではなく、使用中のデータが絶対的ではありません。

もちろん、私が持っている実際のデータには、私が削除したい行に似た行がたくさんあります。

これまでに私が持っていた最高は次のとおりです。

 sed '/pattern/I,+11 d' infile

しかし、論理的なパターンを考え出すことはできません。これまでに思いついたすべてのパターンは、ディレクトリ数に関係なくすべての行を削除します。

私は尋ねたくありませんが、これは最終的にRegExとGNU sedについてよりよく理解することができます。

ベストアンサー1

例:

sed '/^[A-Z]:\\\([^\\]\+\\\)\{3,\}/,+10d' test.txt

拡張正規表現(-rで指定sed)を使用する場合は、次をエスケープするだけで、式を読みやすくなります\

sed -r '/^[A-Z]:\\([^\\]+\\){3,}/,+10d' test.txt

興味深い部分は、([^\\]+\\){3,}括弧内のパターンがを除くすべての文字の1つ以上のインスタンスと一致することを意味し/、その後には/。マッチ。

おすすめ記事