sed

sed

ファイルはランダムに見つかるため、場所を覚えておらず、2つのパターン間のテキストを印刷する必要があります。テキストが同じ行に表示されるか、同じ行に表示されない、またはその間に表示されます。

パターンは次<abc>のとおりです。</abc>

例:

aslkdjas<abc>aaaa</abc><abc>bbbb</abc>sdkljasdl<abc>
cccc
dddd</abc>ieurwioeru<abc>eeee</abc>asdasd

2 つのパターン間の値を表示するには、次の出力が必要な場合、またはこのファイルで発生したすべての操作をコンマで区切る必要があります。

aaaa
bbbb
cccc
dddd
eeee

ベストアンサー1

機能コードを解析するためにテキスト処理ツールを使用しないことをお勧めします。彼らは人間の言語を解析するように設計されており、近いうちに解決できない問題に直面するでしょう。特別なツール(htmlインタプリタ、C ++コンパイラなど)を使用してください。

この場合は、次のことを試すことができますpcregrep

pcregrep -Mo '<abc>\K(.|\n)*?(?=</abc>)' file

明らかにする

aaaa
bbbb

cccc
dddd
eeee

bbbbccccはい、元のファイルに新しい行があったため、との間に新しい行があります。もちろん、必要に応じて空白を削除するために出力をパイプすることもできます(使用trまたは他の方法)sed。しかし、前述したように、実際のケースでは、予期しない結果がより多く発生する可能性があります。

おすすめ記事