日付一覧からファイルを結合する
次の様な日付一覧があるとする
2014-07-01 2014-07-02 2014-07-03 2014-07-04 2014-07-05 2014-07-06 2014-07-07 2014-07-08 2014-07-09
この日付をファイル名に含んだファイル郡があって、そのファイル郡をひとつに結合してしまいたい。 ログデータを扱っているときには、割とあるあるで起きる作業である。
この時、
- 1 日付一覧を使って処理したいファイルパスの一覧を構築する
- 2 一覧をcatコマンドでくっつける
という手順で結合操作を行なってしまう。
まず、日付の前後にパスを追加して、ファイルパスにしてしまう。
これにはsedコマンドを使う。
いま、日付一覧をdate_list.dat
に保存されているとする
でprefixに./data/users_at_と追加したいとする。
まずは、sedコマンドを使って、ファイルパスを作成する。
processed_tmp=`sed -e "s|^\(.\+\)$|./data/users_accessed_checklist/users_at_\1|g" date_list.dat`
次に、改行文字を消す為にtr
コマンドを利用する。
processed=`echo ${processed_tmp} | tr '\n' ' '`
とすると、奇麗に改行文字も消える。
この実行結果は次のようになっているはず。
echo ${processed}
./data/users_accessed_checklist/users_at_2014-07-01 ./data/users_accessed_checklist/users_at_2014-07-02 ./data/users_accessed_checklist/users_at_2014-07-03 ./data/users_accessed_checklist/users_at_2014-07-04 ./data/users_accessed_checklist/users_at_2014-07-05 ./data/users_accessed_checklist/users_at_2014-07-06 ./data/users_accessed_checklist/users_at_2014-07-07 ./data/users_accessed_checklist/users_at_2014-07-08 ./data/users_accessed_checklist/users_at_2014-07-09 ./data/users_accessed_checklist/users_at_2014-07-10 ./data/users_accessed_checklist/users_at_2014-07-11 ./data/users_accessed_checklist/users_at_2014-07-12 ./data/users_accessed_checklist/users_at_2014-07-13 ./data/users_accessed_checklist/users_at_2014-07-14 ./data/users_accessed_checklist/users_at_2014-07-15
あとは、この一覧にcatコマンドを適用してやればよい。
cat ${processed} > concatenated.data