• ベストアンサー

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シェル初心者です。宜しくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.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

yumisa1
質問者

お礼

ありがとうございます。 実は、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個にしているという事でしょうか。 これを応用すれば出来るでしょうか…。試しています。

その他の回答 (3)

  • 10940
  • ベストアンサー率21% (41/187)
回答No.3

ご参考に http://www.netfort.gr.jp/~dancer/diary/daily/2005-Jun-16.html.ja IFS=' ' とすれば空白区切りも扱えます。 でも100文字も扱えませんが...(苦笑) やっぱりawkやgrepを呼び出すことを考えたほうがよいでしょう。

yumisa1
質問者

お礼

ありがとうございます。 実は、実際にやりたいテキストファイルは、2000行2000列程になります。 難しそうですね…。

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

う~ん, 私も #1 と同意見です. Bourne シェルに固執しない方が幸せじゃないかな. 入力データがスペースで区切られているので read とか for とかを駆使すればできそうな感じではあるんだけど.... 正直なところ, 素直に普通のプログラム言語を使った方がいいと思います. というか, Bourne シェルに限定する理由ってなに?

yumisa1
質問者

お礼

そうなんですか…。Bシェルなら少しだけ分かるので、Bシェルで作りたいと思ったのですが、ちょっと無理そうですね。 このシェルは、もともと、あるプログラムを動かしたところ、 結果が出るのに2週間程かかる事が分かり、このシェルによって、 テキストを整えれば、短縮されるかなと思って、作ろうと試みました。 他の言語を使うとなると、その2週間を越す自信が無いので…。 ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

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とか使ったほうが楽だと思います。

yumisa1
質問者

お礼

ありがとうございます。 Bシェルなら少し分かるので、Bシェルで書きたいなと…。 ファイルから読み込むならreadですか。 勉強してみます。ありがとうございました。

関連するQ&A

専門家に質問してみよう