プロが教える店舗&オフィスのセキュリティ対策術

Linuxでのシェルプログラミングについての質問です。
(#!/bin/shを使ってます。)

改行、空白、数字をランダムに含むファイルを複数読み込んで、それぞれのファイルから数字だけ一個ずつ抜き出すにはどうすればいいでしょうか?

最初に二個の数字(A,Bとする)読み込んで、その二つの最大公約数(C)を計算した後、さらに次の数字(D)を読み込んで次は先ほどの公約数(C)と新しく読み込んだ数字(D)の最大公約数(E)を計算して・・・を繰り返していくプログラムを作ろうとしています。

最大公約数を計算するwhile loopはできています。数字はファイルから読み込まれるため、一個ずつ空白、改行を無視しながら読み込んでいかなければいけないと思うのですが、どのようにやっていけばいいのかわかりません。

A 回答 (3件)

ファイルがそう大きくなければ、こんな感じで簡単に。


for n in `cat file`
do echo $n
done

ファイルが非常に大きければ、まず空白を改行に直して、空行を取り除いて、1行ずつ読む。
cat file | tr ' ' '\n' | grep -v '^$' | while read n
do echo $n
done
    • good
    • 0

sed とか活用すれば、正規表現を使えるんじゃないかな。

    • good
    • 0

数字が 1行に (高々) 1個だけあって, しかも前後に余計な空白がないなら grep でも使えばいいと思う.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!