SSブログ

ちょっとブレイクタイム Linuxで複数行(単位)を1行にするTips [Tips]

今日は、久しぶりに感動するコマンドに出会いました。それは、pasteコマンドです。知っている方は多数いると思いますが、Unix系を10年ぐらいかじってますが、やっと出会いました。仕事で3行単位に繰り返しデータが書いてある100MB程度のテキストファイル(ログファイル)が数10ファイルあり、時間単位の集計をするため、なんとか簡単に3行を1行のCSVファイルにできないか考えていたところ、googleでここがヒットしました。
さて、使い方をお知らせしたいと思います。

1.複数行(単位)を1行にする
  たとえば、以下のようなファイルがあったとします。ファイル名はa.logとしておきましょう。
  time:2010/11/01 10:00:00
  user:assimane
  operation:search
  time:2010/11/01 10:00:01
  user:assimane
  operation:update
  time:2010/11/01 10:10:05
  user:taro
  operation:update

  このファイルは3行単位にデータが繰り返されています。
  この3行を1行に,(カンマ)区切りにするには、以下のようにします。

  cat a.log | paste -d , - - -
  time:2010/11/01 10:00:00,user:assimane,operation:search
  time:2010/11/01 10:00:01,user:assimane,operation:update
  time:2010/11/01 10:10:01,user:taro,operation:update

  4行単位ならば、-の数をもうひとつ増やします。
  cat a.log | paste -d , - - - -

  本当に簡単に1行にまとめられました。

2.2つのファイルの連結する
  例えば、以下のようなファイルがあったとします。
  ファイル:aaa
  1
  2
  3

  ファイル:bbb
  a
  b
  c

  この2つのファイルを,(カンマ)で連結します。
  paste -d , aaa bbb
  1,a
  2,b
  3,c

  この程度なら、エクセルでも可能ですね。。。

見ていただいた方のお役に立てれば幸いです。

nice!(0)  コメント(2)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

ぽんこつ戦艦

とても大きなファイルだと1.ができない例が多くて、シェルだかcatの実装だかに依存する部分があるのでは
by ぽんこつ戦艦 (2013-05-28 11:24) 

norio

おおお、すごい。
行結合は苦手意識がありましたが、
これは余裕ですね。ありがとうございます。
by norio (2013-06-19 00:01) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。