Linuxコマンドを使いこなす。grep、sed、awk ( Linuxコマンドを制するものは障害対応を制す)
例えば、今までずっとコードでベタ書きしていたデータがどんどん増えてきて、データベースでの管理に変えたい時などがありますよね。
例えばこういう時、item_idと値段(price)をあろうことかハッシュで管理してたとします。
ファイル名 item.pmとします。
# item_id と値段の紐付け $item_price = { 1 => 5000, 2 => 3000, 3 => 1000, 4 => 1000, 5 => 6000, 6 => 7000, 7 => 1000, }
で、これをデータベース(item_data (item_id、price))で管理するとなると、
(´-`).。oO(insert into item_data values(1,5000)とかして一個一個入れるしかないか)
と、思いがちですが、次の理由からしたくありません。
1. 面倒。
2. タイプミスする可能性がある。
そこで、
~Linuxコマンド~
を使います。
ここで、やりたいことは、
1. item_idとpriceの行を抜き出したい。
2. priceの","を消したい。
3. クエリを作りたい。
です。
grep "=>" item.pm |sed -e "s/,//g"|awk '{print "INSERT INTO api_client VALUES("$1" ,"$3");"}'
で、できます。
説明すると、
1. item_idとpriceの行を抜き出したい。(grep "=>" item.pm で"=>"の行を抜き出す)
2. priceの","を消したい。(置換コマンドsed -e "s/,//g" で、,を消去する。)
3. クエリを作りたい。(awk '{print "INSERT INTO api_client VALUES("$1" ,"$3");" でスペース区切りで数えて左から一つ目のitem_idは"$1" に、三つ目のprice"$3"に代入される)
となります。 このようにLinuxコマンドを使えるとすごい作業効率が上がります。
参考まで