解析命令行值

时间:2015-12-12 10:50:55

标签: bash text-parsing

我的脚本出现问题,我似乎无法看到问题出现在哪里。

rules=$(echo "$result" | grep '^[[:space:]]\{2\}[0-9]\|^\*' | sed 's/^.//' | \
        awk '{ x = $0 "\n" x } END { printf "%s", x }' | awk '{print $1}')
numRules=$(echo "$rules" | wc -l)

这是我的下面数据的脚本,这将是$result

的值
ID Action Category From Hits 
---------------------------- 
100 deny trial1     herb 0
200 deny trial2222 herb.patrick 0
300 deny triaaaals herb.patrick.hernandez 0

我的目标是能够在$rules中获得100,200,300的ID,并且我能够获得此示例中的ID总数:{{1} } 3将是正确的回报。

$numRules

1 个答案:

答案 0 :(得分:1)

使用GNU grep和数组:

rules=($(grep -o '^[0-9]\+' file))
numRules=${#rules[@]}

echo ${rules[@]}
echo $numRules

输出:

100 200 300
3