所以,我有一个名为“dummy”的文件,其中包含以下字符串:

"There is 100% packet loss at node 1".

我还有一个小脚本,我想用它来获取这个文件的百分比。剧本如下。
result=`grep 'packet loss' dummy` |
awk '{  first=match($0,"[0-9]+%")
        last=match($0," packet loss")
        s=substr($0,first,last-first)
        print s}'

echo $result

在这种情况下,我希望$result的值基本上是100%。但出于某种原因,它只是打印出一个空字符串。有人能帮我吗?

最佳答案

您需要在awk命令结束后加上结束的倒勾,但最好使用$()

result=$( grep 'packet loss' dummy |
awk '{  first=match($0,"[0-9]+%")
    last=match($0," packet loss")
    s=substr($0,first,last-first)
    print s}' )

echo $result

但你可以这样做:
result=$( grep 'packet loss' | grep -o "[0-9]\+%" )

关于bash - 使用bash shell脚本和awk提取子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2573009/

10-10 17:53