2つのテーブルを含むHTMLページがあります。
両方のテーブルは同じラベル " <table role="grid">
"で始まり、2番目のテーブルコードを表示したいと思います。
現在は最初の項目だけを表示することがわかっています。
sed -n '/<table role=\"grid\">/,/<\/table>/p' page.html
あなたは何をしますか?
ベストアンサー1
これはうまくいきますが、より簡単な解決策が必要だと確信しています。
sed -n '/<table role=\"grid\">/{
x
/^$/b
x
:loop
p
/<\/table>/q
n
b loop
}'
一致すると、table
行が予約済みスペースに変わり(x)、以前に予約されたコンテンツが比較されます。最初は空なので(/^$/)、スクリプトの最後に分岐します(b)。次回は予約は空ではありません(最初のテーブル行があります)。したがって、スワップ(x)を元に戻し、終了(q)時にテーブルの終わりが一致するまで行(p)を印刷するループを開始します。毎回次の行(n)が得られ、ループラベルに再分岐します。
awkでははるかに簡単です。
awk '/<table role=\"grid\">/,/<\/table>/ { if(n==1)print }
/<\/table>/ { n++ }'