テキストの天気データを解析しています:http ://www.nws.noaa.gov/view/prodsByState.php?state = OH&prodtype = hourlyで、自分の郡/地域のデータのみを取得したいと考えています。秘訣は、各テキストレポートにはその日の早い段階からの以前のレポートがあり、ファイルの先頭に向かって表示される最新のレポートにのみ関心があるということです。sedワンライナーの「2つの正規表現の間のファイルの印刷セクション(両端を含む)」を使用しようとしました。一度発生した後に停止させる方法がわかりませんでした。
sed -n '/OHZ061/,/OHZ062/p' /tmp/weather.html
私はこれを見つけました:パターン間のsed printは、次のように機能する最初の一致結果です
sed -n '/OHZ061/,$p;/OHZ062/q' /tmp/weather.html
しかし、私はそれが最も堅牢なソリューションではないように感じます。堅牢性のステートメントを裏付けるものは何もありませんが、より堅牢なソリューションがあるかもしれないと直感しています。
それで、そこにもっと良い解決策はありますか?また、最初に試みたソリューションを機能させることは可能ですか?そして、解決策を投稿する場合は、sedおよびコマンドラインツールのすべての機能をまだ発見しようとしているので、すべてのスイッチ/後方参照/魔法の説明をお願いします。
そして、あなたを始めるのを助けるために:
wget -q "http://www.nws.noaa.gov/view/prodsByState.php?state=OH&prodtype=hourly" -O /tmp/weather.html
ps:私はこの投稿を見ました:http://www.unix.com/shell-programming-scripting/167069-solved-sed-awk-print-between-patterns-first-occurrence.htmlしかし、sedは完全にギリシャ語でした私と私は、問題を解決するためにそれをいじくり回すことができませんでした。