ホーム>source

2つのパターン間でsed/awkする方法についていくつかの回答を見つけましたが、文字列が含まれている特定のテキストブロックのみを見つける必要もあります。

テキストの例:

<前>ウィズウィズ

したがって、目標は&の間のテキストブロックのみを取得することです。これには、作業パッケージにbla444.1が必要です。これにより、例では最後のテキストブロックのみが表示されます。もちろん、sedしたいファイルには、より多くの要件があり、必要なワークパッケージを含むいくつかの要件があるため、sedで最後に見つかったテキストブロックだけでなく、

<前>ウィズウィズ

上記のsed行は、すべてのテキストブロック(要件)を示します。

1つは、テキストブロックに固定行数がないことですが、すべてワークパッケージがあります。

advに感謝します。

<requirement id = "blabla.1" slogan = "Handling of blabla" work-package = "bla444.2" logical-node = "BLA-C" level = "System" > Bla bla. </requirement> <requirement id = "bla.2" slogan = "Reporting of blabla" work-package = "bla444.1" logical-node = "BLA-C" level = "System" > Bla bla bla. </requirement>
あなたの答え
  • 解決した方法 # 1

    以下をお試しください。

    <前>ウィズウィズ

    説明: 上記のコードの詳細な説明を追加します。

    <前>ウィズウィズ awk ' /^<requirement/{ if(found && value){ print value } found=value="" } { value=(value?value ORS:"")$0 } /work-package.*bla444.1\"$/{ found=1 } END{ if(found && value){ print value } } ' Input_file

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ jqueryを使用した高度な複数チェックボックスフィルター