如何在以下示例中读取值“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的 - #
如何在以下示例中读取值“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的 - #
我会做这样的事情:
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)"
这会有所帮助。
egrep '[0-9]+' test | cut -f 1 -d " " | uniq
这假定样本输入将始终位于文件的底部。你可能会更好使用'egrep'[0-9] +''而不是尾巴。就像这样,这也是一个[无用的猫](http://partmaps.org/era/unix/award.html#cat)的例子。你可以直接调用'cut -f 1 -d“”filename'。 – 2012-04-27 11:54:50
进行了更改。谢谢 – ganesshkumar 2012-04-27 11:59:41
它的工作很棒..但是,它多次打印5次。我怎样才能打印一次? – 2012-04-27 03:37:58
@RajK我很困惑,你想要什么。你想让它找到文件中的第一个'5'并打印出来吗?如果那是为什么你不使用数字5?我假定你想要的是找到所有看起来像'## x Something'的行并打印出它找到的数字。如果那不是你想要的,你能澄清你的问题吗? – 2012-04-27 03:43:06
对此感到抱歉。我列出的输出是从其他程序生成并存储在一个文件中。现在从该文件中,我想读取上面示例中的“x”符号之前的数字,并将其存储在一个变量中,并与我的shell脚本一起用于lpr。这是否有意义...? – 2012-04-27 03:48:19