Awk 搜索行直到匹配,然后为变量赋值
使用AWK,我想读取一行并将所选输出设置为一个变量,最终我们将使用该变量从DB调用。在谷歌搜索了很多次之后,我发现自己迷路了。我没有得到任何语法错误,只是没有输出爱 如蒙协助,将不胜感激Awk 搜索行直到匹配,然后为变量赋值,awk,Awk,使用AWK,我想读取一行并将所选输出设置为一个变量,最终我们将使用该变量从DB调用。在谷歌搜索了很多次之后,我发现自己迷路了。我没有得到任何语法错误,只是没有输出爱 如蒙协助,将不胜感激 Line 270: Ping statistics for 69.168.188.77: Line 271: Packets: Sent = 100, Received = 100, Lost = 0 (0% loss), Line 272: Approximate round trip times in mi
Line 270: Ping statistics for 69.168.188.77:
Line 271: Packets: Sent = 100, Received = 100, Lost = 0 (0% loss),
Line 272: Approximate round trip times in milli-seconds:
Line 273: Minimum = 612ms, Maximum = 657ms, Average = 633ms
我一直在尝试这样的事情
extpinglostvalue=`awk '{print $10 ; if (NR =271) print ""}' filename.txt`
echo -e "Value is $extpinglostvalue"
如果试图在变量中捕获0 Lost=后的值,则可以执行以下操作:
extpinglostvalue=$(awk 'NR==271{for(i=1;i<=NF;i++)if($i=="Lost")print $(i+2)}' filename.txt)
说明:
NR==271:这将对第271行执行我们的操作
我们的操作是遍历由空格分隔的行的每个字段。当我们遇到丢失的字段时,我们会抓住它后面的第二个字段,因为中间有一个=to,我们需要跳过。
使用命令替换$。。而不是回击。
要获取丢失数据包的数量,请执行以下操作:
awk '/Packets: Sent/{print $10}' file
0
但是你想打印什么?迷失中的0=0?精彩绝伦。这需要我花一些时间来弄清楚它是如何工作的,但它确实如此。先生们,干杯。“一如既往,真的非常感谢。”user3433321补充了一些解释。希望有帮助@杰帕尔是的。非常感谢你。