sedを使用してテキストレポートファイルの特定の「テーブル」のみを印刷するにはどうすればよいですか? [コピー]

sedを使用してテキストレポートファイルの特定の「テーブル」のみを印刷するにはどうすればよいですか? [コピー]

Quartusによって生成されたレポートファイルには、次のようないくつかの「テーブル」があります。

+---------------------+
; Section1 Title      ;
+---------------------+
Miscellaneous text

+-----------------+
; Table1 Header   ;
+--------+--------;
; Field1 ; Field2 ;
; Field3 ; Field4 ;
+--------+--------+
Table notes

+------------------------+
; Table2 Header          ;
+---------------+--------;
; Longer Field1 ; Field2 ;
; Longer Field3 ; Field4 ;
+---------------+--------+

+---------------------+
; Section2 Title      ;
+---------------------+
Miscellaneous text

注:セクションと表の間には常に空白行があります。

以下のように、「ヘッダー」に一致する項目に基づいて完全なテーブルを印刷できるようにしたいです。

+-----------------+
; Table1 Header   ;
+--------+--------;
; Field1 ; Field2 ;
; Field3 ; Field4 ;
+--------+--------+
Table notes

現在、grepの次の組み合わせを使用してスタートアップテーブルの行を印刷し、sedを使用して残りを印刷していますが、sedだけを使用してこれらすべてを実行できるようです。

grep -h -B 1 "; Table1 Header" quartus.rpt | grep -v "; Table1 Header"
sed -n '/; Table1 Header/,/^$/p' quartus.rpt

ベストアンサー1

awkを使用してください。

$ awk -v RS= '/Table1 Header/' file
+-----------------+
; Table1 Header   ;
+--------+--------;
; Field1 ; Field2 ;
; Field3 ; Field4 ;
+--------+--------+
Table notes

おすすめ記事