如何从shell脚本中的文本文件中检索数值?

时间:2016-10-04 12:19:35

标签: bash

以下内容已写入名为test.txt的文本文件中。如何检索待处理的& shell脚本中的完成计数值?

var idleTimerId;
$('.linkClass').on('click', function(event){
  idleTimerId = setTimeout(function(){ alert("Hello"); }, 5000);
});

// in this example the timer will be initialized when the link is clicked first. 
// Then waits 5000ms to fire. if you want to cancel it - call clearTimeout() 
// with idealTimerId;

这是我试过的:

DELETE FROM table WHERE id in(
    SELECT x.id 
    FROM ( 
        SELECT *,count(id) cc FROM table group by col1,col2,col3... 
    ) x
    WHERE x.cc>1
)

3 个答案:

答案 0 :(得分:1)

grepawk命令几乎总是可以组合成1 awk命令。并且2个awk命令几乎总是可以组合成1 awk命令。

这解决了你的直接问题(使用一个小的awk类型的铸造技巧)。

completedStatus=$(echo "<p class="pending">Count: 0</p>^J
      <p class="completed">Count: 0</p>" \
    | awk -F : '/completed/{var=$2+0.0;print var}' )
echo completedStatus=$completedStatus

输出

completedStatus=0

请注意,您可以将grep和awk与

结合使用
awk -F : '/completed/' test.txt

过滤到完成的行输出

<p class=completed>Count: 0</p>

当我添加-F参数时,输出没有改变,即

  awk -F'<p|< p="">' '/completed/' test.txt

<强>输出

<p class=completed>Count: 0</p>

所以我依靠:作为-F(字段分隔符)。现在输出是

awk -F : '/completed/{print $2}'

<强>输出

 0</p>

执行计算时,awk将读取前面的数字“查找”值,如果找到一个数字,它将读取数据,直到找到非数字(或者如果有的话)精光)。所以...

  awk -F : '/completed/{var=$2+0.0;print var}' test.txt

<强>输出

  0

最后,我们得出上面的解决方案,将代码包装在现代命令替换中,即$( ... cmds ....),并将输出发送到completedStatus=赋值。

如果您认为+0.0添加是正在输出的内容,您可以将文件更改为显示已完成的计数= 10,输出将为10.

IHTH

答案 1 :(得分:1)

另一个awk

completedStatus=$(awk -F'[ :<]' '/completed/{print $(NF-1)}' file)

答案 2 :(得分:0)

如果我找对你,你只想提取待定或已完成的值。如果是这样的话,

然后使用SED,

请查看以下脚本。Output shared via picture, please click to see

#!/bin/bash

file="$1"

echo "Simple"

cat $1 |sed 's/^.*=\"\([a-z]*\)\">Count: \([0-9]\)<.*$/\1=\2/g'

echo "Pipe Separated"

cat $1 |sed 's/^.*=\"\([a-z]*\)\">Count: \([0-9]\)<.*$/\1|\2/g'

echo "CSV Style or comma separeted"

cat $1 |sed 's/^.*=\"\([a-z]*\)\">Count: \([0-9]\)<.*$/\1,\2/g'