• ベストアンサー

こんにちは。

こんにちは。 UNIXを勉強中のものです。 縦一列にデータが入っているテキストファイルがあります。 これを12行ごとに違う列に並べていきたいのですが、方法がわかりません。 shell,awkなどを使ってできる方法をご存知の方いらっしゃいましたら、 ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tyatsumi
  • ベストアンサー率58% (30/51)
回答No.2

splitとpasteを使ったシェルスクリプトで書いてみました。 次のスクリプトを rowwrap という名前で保存して実行属性を付けてください。 #!/bin/sh TEMP=/tmp/rowwrap_ split -l $2 $1 $TEMP paste $TEMP* rm -f $TEMP* 使い方は、data というファイルにデータが入っているとして、 12行ごと列に分けるとして、 結果を result というファイルに入れるとすると、シェル上で ./rowwrap data 12 > result とします。 なお、一時ファイルを /tmp 以下に作るようになっています。 一時ファイルの場所を変えたい場合は TEMP 変数を書き換えてください。

goo2dolls
質問者

お礼

きれいなスクリプトですね。 シェルスクリプトに ./rowwrap data 12 > result のようにファイルを投入する方法も始めて知りました。 勉強させていただきました。 ありがとうございます。

その他の回答 (1)

noname#140045
noname#140045
回答No.1

【補足要求】 "違う列"と言うのが、イマイチよくわかりません。 例えば、1~23の数字からなる、23行のファイルを処理すると、どうなれば良いのでしょうか。 具体的な説明をお願いします。

goo2dolls
質問者

補足

説明が足りず申し訳ありません。 その場合、 1~12が一列目 13~23が二列目 となるようにしたいのです。 もし1~36の数字からなる36行のファイルだった場合 1~12が一列目 13~24が二列目 25~36が三列目 となります。 これのn行(nは不明)という場合の処理をしたいということでした。 よろしくお願いします。

関連するQ&A