- ベストアンサー
100文字が並ぶテキストを10行10列にする方法(Bシェルにて)
100文字が並ぶテキストをBシェルにて10行10列にする方法を教えてください。 テキスト(test.txt)には、次のようにスペースで区切られて100文字入っています。(この例の様に規則性はありません) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ..(省略) ↓これを 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (省略) の様にするやり方を教えてください。 Bシェル初心者です。宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
手元にはbashしかないですが、たぶんこれでBシェルでも動くと思います。 set `cat test.txt` while test "$1" do echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} shift;shift;shift;shift;shift;shift;shift;shift;shift;shift done
その他の回答 (3)
- 10940
- ベストアンサー率21% (41/187)
ご参考に http://www.netfort.gr.jp/~dancer/diary/daily/2005-Jun-16.html.ja IFS=' ' とすれば空白区切りも扱えます。 でも100文字も扱えませんが...(苦笑) やっぱりawkやgrepを呼び出すことを考えたほうがよいでしょう。
お礼
ありがとうございます。 実は、実際にやりたいテキストファイルは、2000行2000列程になります。 難しそうですね…。
- Tacosan
- ベストアンサー率23% (3656/15482)
う~ん, 私も #1 と同意見です. Bourne シェルに固執しない方が幸せじゃないかな. 入力データがスペースで区切られているので read とか for とかを駆使すればできそうな感じではあるんだけど.... 正直なところ, 素直に普通のプログラム言語を使った方がいいと思います. というか, Bourne シェルに限定する理由ってなに?
お礼
そうなんですか…。Bシェルなら少しだけ分かるので、Bシェルで作りたいと思ったのですが、ちょっと無理そうですね。 このシェルは、もともと、あるプログラムを動かしたところ、 結果が出るのに2週間程かかる事が分かり、このシェルによって、 テキストを整えれば、短縮されるかなと思って、作ろうと試みました。 他の言語を使うとなると、その2週間を越す自信が無いので…。 ありがとうございました。
- osamuy
- ベストアンサー率42% (1231/2878)
solarisのman shを読んだ限りだと、Bシェルだけで実現するのは難しいかも。bashで良いならこんな感じ: s=12345678901234567890 seplen=6 for (( pos=0; $pos < ${#s}; pos=(($pos + $seplen)) )); do echo ${s:$pos:$seplen} done ファイルから読み込むにはreadとか使う必要があります。 本当にshしか使えない(shがbshで外部コマンド一切NGとか)じゃないんだとしたら、perlとか使ったほうが楽だと思います。
お礼
ありがとうございます。 Bシェルなら少し分かるので、Bシェルで書きたいなと…。 ファイルから読み込むならreadですか。 勉強してみます。ありがとうございました。
お礼
ありがとうございます。 実は、100文字が並ぶテキストと書いたのですが、2048×2048個が並ぶテキストです。 これを2048行2048列にしたいと思っています。 次の箇所で、 ************************************************************* do echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} shift;shift;shift;shift;shift;shift;shift;shift;shift;shift ************************************************************* 10×10=100個にしているという事でしょうか。 これを応用すれば出来るでしょうか…。試しています。