Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 搜索行直到匹配,然后为变量赋值_Awk - Fatal编程技术网

Awk 搜索行直到匹配,然后为变量赋值

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

使用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 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补充了一些解释。希望有帮助@杰帕尔是的。非常感谢你。