[シェル芸][WordPress]投稿日付とタイトルの一覧を表示する


profile-photo-usptomo-96x96みなさんこんにちは。WordPressの投稿日付とタイトルを1画面で、しかもコマンドラインで一覧にしたいと思いましてシェル芸化してみました。いつどんな記事を書いたのかを思い出すのに、ブラウザをポチポチしなくて済みますよ。

まずはワンライナーを見てみましょう。

[ (っ´∀`)っ@友の会 ~]$ mysql -u USERNAME -pPASSWORD -h localhost BLOG-DB -e "select post_date,post_title from wp_posts where post_status = 'publish'G" | egrep '(^[[:space:]]*post|^post)' | cut -b 13- | while read LINE; do if [ $(echo $LINE | egrep '(^20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9])' | wc -l) = 1 ]; then echo -n $LINE$'t'; else echo $LINE; fi ; done

mysqlコマンドの-eオプションで、シェル上に出力するようにしています。その後のパイプを一切つなげないとこうなります。

*************************** 1. row ***************************
post_date: 2007-10-23 14:02:12
post_title: 代休
*************************** 2. row ***************************
post_date: 2007-10-23 19:17:58
post_title: 昨日
*************************** 3. row ***************************
post_date: 2007-10-23 21:19:37
post_title: ポークソテーを
*************************** 4. row ***************************
・・・

このように、「 post_date:」と「 post_title:」が出力されます。これらを1行にまとめるため、綺麗に整形します。

[ (っ´∀`)っ@友の会 ~]$ mysql -u USERNAME -pPASSWORD -h localhost BLOG-DB -e "select post_date,post_title from wp_posts where post_status = 'publish'G" | egrep '(^[[:space:]]*post|^post)' | cut -b 13-
2007-10-23 14:02:12
代休
2007-10-23 19:17:58
昨日
2007-10-23 21:19:37
ポークソテーを
・・・

このように、余計な表示が取れたのはよいのですが、日付とタイトルで1行ずつの表示になってしまいます。さて、この出力をファイルに吐かずワンライナーで済ませるために、1行ごとに処理してあげることにします。日付の行は改行をTABに置換して出力し、タイトルの行はそのまま出力することにします。もう1度最初のコマンドと出力結果を見てみましょう。

[ (っ´∀`)っ@友の会 ~]$ mysql -u USERNAME -pPASSWORD -h localhost BLOG-DB -e "select post_date,post_title from wp_posts where post_status = 'publish'G" | egrep '(^[[:space:]]*post|^post)' | cut -b 13- | while read LINE; do if [ $(echo $LINE | egrep '(^20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9])' | wc -l) = 1 ]; then echo -n $LINE$'t'; else echo $LINE; fi ; done
2007-10-23 14:02:12	代休
2007-10-23 19:17:58	昨日
2007-10-23 21:19:37	ポークソテーを
2007-10-24 23:35:11	ただいま
2007-10-25 21:22:37	イタイ(;ω;)イタイ
2007-10-26 01:34:43	(つ∀-)オヤスミー
2007-10-27 01:26:45	事故
2007-10-28 12:45:18	切ない・・・
2007-10-29 07:43:29	今日は雨なので
2007-10-29 21:14:21	また・・・
2007-10-30 21:06:28	squid入れた
2007-10-31 01:27:37	squidでSSLアクセラレータを作ってみた
・・・

こんな感じで投稿の日付とブログのタイトルが1行になって出力されるようになりました。

[amazonjs asin="479736758X" locale="JP" title="本格ビジネスサイトを作りながら学ぶ WordPressの教科書"]