2012-04-27 104 views
0

如何在以下示例中讀取值「5」以發出5份文件打印?從php或shell腳本中讀取打印份數的值

例如..我的輸出與下面的代碼類似。

 

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次。我怎樣才能打印一次? – 2012-04-27 03:37:58

+0

@RajK我很困惑,你想要什麼。你想讓它找到文件中的第一個'5'並打印出來嗎?如果那是爲什麼你不使用數字5?我假定你想要的是找到所有看起來像'## x Something'的行並打印出它找到的數字。如果那不是你想要的,你能澄清你的問題嗎? – 2012-04-27 03:43:06

+0

對此感到抱歉。我列出的輸出是從其他程序生成並存儲在一個文件中。現在從該文件中,我想讀取上面示例中的「x」符號之前的數字,並將其存儲在一個變量中,並與我的shell腳本一起用於lpr。這是否有意義...? – 2012-04-27 03:48:19

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'。 – 2012-04-27 11:54:50

+0

進行了更改。謝謝 – ganesshkumar 2012-04-27 11:59:41