2012-04-27 11 views
0

次の例の値 "5"を読み取ってファイルプリントを5部発行できますか?phpまたはシェルスクリプトでコピーを印刷する行の値を読み取る

たとえば、私の出力は以下のコードに似ています。

 

Order: 101 
Guest: Raj 
Phone: xxx-xxx-xxxx 

5 x Bananas 
5 x Grapes 
5 x Apples 

上記のファイルで値5を読み取るにはどうすればよいですか?変数に5を得る方法があれば、lprコマンドでそれを使うことができます。

LPR output.txtと - #

私はこのようなものだろう

答えて

0

:あなたがしたいすべてがユニークな##を発見された場合

sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x \([A-Za-z]\+\)/\1 \2/; p }' file | 
while read num fruit; do 
    echo $num $fruit 
    # do whatever with lpr 
done 

編集

## x Somethingのような文字列がある場合は、これを使用できます。

sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x.*/\1/; p }' file | uniq 

あなたが変数、使用することをキャプチャしたい場合:

var="$(sed -n '/^[0-9]\+ x [A-Za-z]\+/ { s/^\([0-9]\+\) x.*/\1/; p }' file | uniq)" 
+0

でも、何度も5回印刷しています。一度しか印刷できませんか? –

+0

@ RajKあなたが望むものは混乱しています。あなたはファイル内の最初の '5 'を見つけてそれを印刷しますか?その場合、なぜ5番を使用しないのですか?私は、あなたが望むのは、「## x Something」のように見える行をすべて見つけ出し、見つかった番号を印刷することだと仮定しました。それがあなたが望むものでないなら、あなたの質問を明確にすることができますか? –

+0

混乱して申し訳ありません。リストされた出力は、他のプログラムから生成され、ファイルに保存されます。ファイルから、上の例の5のような "x"記号の前の数字を読み込み、それをlprと一緒に使うシェルスクリプトの変数に格納したいと思います。これは意味をなさない...? –

0

これは参考になります。

egrep '[0-9]+' test | cut -f 1 -d " " | uniq 
+0

これは、サンプル入力が常にファイルの一番下にあることを前提としています。テールの代わりに 'egrep '[0-9] +''を使うほうが良いでしょう。つまり、これは[無用な猫の使用](http://partmaps.org/era/unix/award.html#cat)の例でもあります。代わりに 'cut -f 1 -d" "filename"を呼び出すことができます。 –

+0

が変更されました。ありがとう – ganesshkumar

関連する問題