• 締切済み

kshスクリプトからCSVファイルへの書き込み追加

いつもお世話になっております。 毎日データを取得し、結果をcsvファイルに書き込みしていくようなkshのスクリプトを作成中です。 例えばスクリプトで以下のように毎日実行していくと echo "AAAA" >> file2009_04.csv echo "BBBB" >> file2009_04.csv echo "CCCC" >> file2009_04.csv file2009_04.csvファイルには AAAA BBBB CCCC と縦方向のセル(A列)に書き込まれます。 これを以下のように横方向に(A1,B1,C1)書き込まれるようにする方法はありますか? AAAA | BBBB | CCCC | (←"|"はセル区切りのつもり) というのも書き出す部分がAAAAなんていう単語ではなく何十行もあるコマンド結果であり、A列に延々と書かれると追えなくなってしまうのです。 なので今はcsvが出来たらexcelで開いて、切り貼りして横に追加しています… 一ヶ月後にファイルを見たら、手でexcelを集計しなおすことなく、ざっとデータの推移がわかるようなものを作りたいです。 ご存知の方、よろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

えぇと, 「コマンド結果自体は一行にまとめなくてもよさそう」っていわれてもねぇ.... もともとの例では「横方向に書き込まれるようにする」って書いてあるでしょ? これを普通に解釈したら「1行にまとめる」以外の何物でもないような気がする. ということで, 「本当はどうしたいのか」が分からないと, ちょっと何ともならないですね. ああ, 「横に追加する」のは手間がめちゃくちゃかかりそうなのでパス. よほどうまく作らないとバグの温床にしかならないような気がする. 「行を追加する」という仕様にして, 最後の表も全体で縦と横を入れ替えるだけでいいじゃん. もしくはデータベースに突っ込む?

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>ですがunix画面の表示ではなく、csvファイルで開いた際に横列に追加していけるようにしたいのです。 「unixの画面」とは何のことでしょうか? >結果をcsvファイルに書き込みしていくようなkshのスクリプトを作成中です。 とお書きだったので、csvファイルに追加書き込みする回答を書いたのですが。 「開いた際に横列に追加」とお書きですが、ファイルを開いた際にコマンドを実行するというのは意味不明です。コマンド実行時点で出力をファイルに追加していけばいいのでは?

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

echo で改行したくないのなら、 echo -n "AAAAA" "|" >> file2009_04.csv echo -n "BBBBB" "|" >> file2009_04.csv echo "CCCCC" >> file2009_04.csv

noname#147649
質問者

補足

ありがとうございます。 ですがunix画面の表示ではなく、csvファイルで開いた際に横列に追加していけるようにしたいのです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「何十行もあるコマンド結果」全体を 1行にしたいなら read なんかを使えばいけると思う. 例えば (line=''; while read l; do line="$line,$l"; done; echo $line) でいいのかな?

noname#147649
質問者

お礼

ありがとうございます。 ちょっと試してみましたが、面白い表現ができそうですね。 一日分のコマンド結果を横一行にまとめて、翌日は二行目に追加という発想ですよね? コマンド結果自体は(lsやdfの結果)一行にまとめなくてもよさそうなのですが、これだとcsvでA1,B1,C1…に横に追加することは難しいんでしょうかね~;

関連するQ&A