<>を含む特定のパターン間の文字を印刷します。

<>を含む特定のパターン間の文字を印刷します。

あなたの助けを求めてください。

私はたくさん見つけて、awkとsedを使っていくつかのテストをしましたが、うまくいきません。以下は設定ファイルの一部です。 grepを介して出力を取得できますが、必要な方法ではありません。

> file.txt
> 
> "<property>name="DBName"><value>ABC</value>name="DBName"><value>DEF</value></property>
> 
> cat file.xml | grep -o -P '.name="DBName"><value>.{0,20}'
> name="DBName"><value>ABC</value>
> name="DBName"><value>DEF</value></propert

希望の出力は次のとおりです。

ABC
DEF

助けてくれてありがとう。

そして私

ベストアンサー1

(巨大で巨大な「if」)あなたのファイルが実際にあなたが望む非常に単純な場合のみを持っている場合精密文字列<value>の後には-文字以外の文字が続きます。したがって、<質問は「</value>各項目とその後の最初の項目の間にある単純な非改行文字列を取得します」と定式化することができ、次のことができます(GNUを使用) :<value><grep

grep -oP '<value>\K[^<]+' file

もちろん、これは少し異なる方法で失敗する可能性があります。たとえば、複数行の値がある場合、または値タグに<value foo=bar>または同じものがある場合、これは完全に有効な他の複数のXML状況でも機能します。正しい方法はXM:パーサーを使用することです。確認したいかもしれませんxmllintまたはXMLスター他のものの間。

おすすめ記事