コマンド解説の最近のブログ記事

スペースとTABが混在しているテキストにおいて、普通にawkで区切ると、両方とも区切り文字として認識されます。しかし、「スペースかTABのどちらか」を区切り文字にしたい場合は、次のようにします。

【サンプルのテキスト】

sh-3.2$ cat hoge
1 2 3 4 5 6

ちょっとわかりにくいので、スペースをアンダーバーに置換してみます。
sh-3.2$ cat hoge | sed -e s/\ /_/g
1_2 3_4_5 6

つまり、テキストファイル「hoge」は、2列目と3列目、5列目と6列目の間がTABで区切られている状態です。


【TABを区切り文字にする】

sh-3.2$ cat hoge | awk 'BEGIN {FS="\t"}{print $2}'
3 4 5


【スペースを区切り文字にする】

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1,$2}'
1 2 3

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1"\t"$2}'
1 2 3

sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $2}'
2 3

かなり力ワザですがw
一旦スペースをアンダーバーに置換してから、アンダーバーを区切り文字にすることで解決。
もっとスマートなやり方があったら教えてください!><
とっくにあけきりましてオメデトウ御座います。 (っ´∀`)っ ゃー でございます。
久々に記事書こうとしたら、このblogのIDとパスワードをセットで忘れてしまいまして本当に焦りました。なので次の方法で思い出したわけで、まあ、次忘れたときのためにメモろうかと。

1) MySQLにログインする

$ mysql -h <DB_SERVER> -u <USERNAME> -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 226404
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


2) Movable Typeのデータベースに入る

mysql> use <DATABASE_NAME>;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


3) mt_authorのテーブルをselectする

mysql> select author_email,author_name,author_nickname,author_password,author_hint from mt_author;
+------------------------+-------------+-------------------------+-----------------+--------------+
| author_email           | author_name | author_nickname         | author_password | author_hint  |
+------------------------+-------------+-------------------------+-----------------+--------------+
| hoge@example.com       | hoge        | (っ´∀`)っ ゃー       | OXeT67r/BsJDf   | 再設定~~   |
+------------------------+-------------+-------------------------+-----------------+--------------+


少なくとも、自分が author_email に設定されたメールを読める環境であれば、 author_hint に設定された再設定用キーワードをブラウザから入力してやれば、リセットされたパスワードをメールで受け取ることができます。さすがに auther_password では生PWは表示されないので、今回は例示用にselectしてみたけど、見るだけ虚しいので別に表示しなくてよいですw

author_name はログイン時に入力するIDのことで、 author_nickname は記事投稿時に表示される自分の名前です。ここで大事なのは author_nickname ですが、ほんとにこれ自分のIDなの?と確認するためにも、ニックネームは表示したほうがよいかも。
こんばんわ。リアル引越で荷造荷解がクソ忙しいのに、ヤフオクでNetScreen 5GTとCisco 2950を2台ずつ落札した (っ´∀`)っ ゃー です。まだイーモバしか回線ないのに、何やってんでしょね。

さて、相変わらずの小ネタですみません。calコマンドの出力結果を使って、1年が何日あるかを算出する、あまり需要のなさそうなスクリプトです。まずは2000年から2010年までの出力結果から。

2000 year is 366 days.
2001 year is 365 days.
2002 year is 365 days.
2003 year is 365 days.
2004 year is 366 days.
2005 year is 365 days.
2006 year is 365 days.
2007 year is 365 days.
2008 year is 366 days.
2009 year is 365 days.
2010 year is 365 days.

ちゃんと、閏年が366日になっていますね。


calコマンドに引数をつけずに実行するとこんな感じ。

$ cal
      May 2009
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


年単位で引数をつけると

$ cal 2009
                               2009

       January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7    1  2  3  4  5  6  7
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    8  9 10 11 12 13 14
11 12 13 14 15 16 17   15 16 17 18 19 20 21   15 16 17 18 19 20 21
18 19 20 21 22 23 24   22 23 24 25 26 27 28   22 23 24 25 26 27 28
25 26 27 28 29 30 31                          29 30 31

・・・(略)

等幅フォントじゃないと崩れますが、まあこんな風になります。
というわけで、年と月と曜日と空行をegrepで除いてやって、wcコマンドで単語の数を数えてやれば、おのずと答えは見えてきます。

試しに今年が何日あるかを見てみましょう。

$ cal 2009 | egrep -v "(2009|[a-zA-Z]|^$)" | wc -w
365

今まで空行を除くのに

$ cal 2009 | egrep -v "(2009|[a-zA-Z]" | egrep . | wc -w

なんてやってたけど、正規表現で空行を「^$」としてやったら、egrepをわざわざ2回使わずに済む!たかだか10年ぶんだったらともかく、100年ぶんとか繰り返すとなると、実行速度に差が出るでしょう。ちょっとした工夫マンセー!

というわけで、こんな風に作ってみました。

$ cat ./bin/datescount.sh
#!/bin/sh
for i in `echo {2000..2010}`
do
echo "$i year is `cal $i | egrep -v "($i|[a-zA-Z]|^$)" | wc -w` days."
done

ね、簡単でしょ?

カスタム検索

カレンダー



このアーカイブについて

このページには、過去に書かれたブログ記事のうちコマンド解説カテゴリに属しているものが含まれています。

前のカテゴリはイベントです。

次のカテゴリはスイーツ(笑)です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

コマンド解説: 月別アーカイブ

Powered by Movable Type 4.01