Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

AWKのFSは単体の文字で無くてもいい

Yahoo!ニュース・トピックス - サイエンス
から、RSSのファイルを取得してきます。

$ curl http://news.yahoo.co.jp/pickup/science/rss.xml > rss.xml
$ cat rss.xml | nl
     1	<?xml version='1.0' encoding='UTF-8'?>
     2	<rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" version="2.0">
     3	<channel>
     4	<title>Yahoo!ニュース・トピックス - サイエンス</title>
     5	<link>http://headlines.yahoo.co.jp/hl?c=c_sci</link>
     6	<description>Yahoo! JAPANのニュース・トピックスで取り上げている最新の見出しを提供しています。</description>
     7	<language>ja</language>
     8	<pubDate>Mon, 14 Sep 2015 23:44:57 +0900</pubDate>
     9	<item>
...
    15	<item>
    16	<title>太陽電池の集光 紙細工で進化</title>
    17	<link>http://news.yahoo.co.jp/pickup/6174339</link>
    18	<pubDate>Mon, 14 Sep 2015 15:19:55 +0900</pubDate>
    19	<enclosure length="133" url="http://i.yimg.jp/images/icon/photo.gif" type="image/gif">
    20	</enclosure>
    21	<guid isPermaLink="false">yahoo/news/topics/6174339</guid>
    22	</item>
...
    68	</item>
    69	</channel>
    70	</rss>

で、頭と尻尾を取りのぞき、rss2として保存し直します。

$ cat rss.xml | awk "(NR >= 9) && (NR <= 68)" > rss2.xml

これを、FSに”\n”と区切りを設定してあげて二番目の記事を表示します。

$ cat rss2.xml | awk 'BEGIN {FS="</item>\n"; RS=""} {print $2}'
<item>
<title>太陽電池の集光 紙細工で進化</title>
<link>http://news.yahoo.co.jp/pickup/6174339</link>
<pubDate>Mon, 14 Sep 2015 15:19:55 +0900</pubDate>
<enclosure length="133" url="http://i.yimg.jp/images/icon/photo.gif" type="image/gif">
</enclosure>
<guid isPermaLink="false">yahoo/news/topics/6174339</guid>

頑張って作りこめば、RubyPython、はてまた外部ライブラリはダメでAwkは大丈夫な環境*1でも、
データをRSSで作っちゃったアプリを使う事ができます。

*1:お察し下さい