こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

こんにちは。

こんにちは。
UNIXを勉強中のものです。

縦一列にデータが入っているテキストファイルがあります。
これを12行ごとに違う列に並べていきたいのですが、方法がわかりません。

shell,awkなどを使ってできる方法をご存知の方いらっしゃいましたら、
ご教授お願いします。

投稿日時 - 2010-09-23 21:01:44

QNo.6203286

すぐに回答ほしいです

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

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 変数を書き換えてください。

投稿日時 - 2010-09-24 01:13:43

お礼

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

投稿日時 - 2010-09-24 02:27:25

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

【補足要求】
"違う列"と言うのが、イマイチよくわかりません。

例えば、1~23の数字からなる、23行のファイルを処理すると、どうなれば良いのでしょうか。
具体的な説明をお願いします。

投稿日時 - 2010-09-23 22:11:57

補足

説明が足りず申し訳ありません。
その場合、

1~12が一列目
13~23が二列目

となるようにしたいのです。

もし1~36の数字からなる36行のファイルだった場合
1~12が一列目
13~24が二列目
25~36が三列目
となります。

これのn行(nは不明)という場合の処理をしたいということでした。
よろしくお願いします。

投稿日時 - 2010-09-23 23:06:27

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-