2012-04-27 100 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