搜索行直到匹配然后将值赋给变量

时间:2014-03-31 12:57:38

标签: 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 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"

2 个答案:

答案 0 :(得分:0)

如果您要尝试捕获0(变量Lost =之后的值,则可以执行以下操作:

extpinglostvalue=$(awk 'NR==271{for(i=1;i<=NF;i++)if($i=="Lost")print $(i+2)}' filename.txt)

说明:

  • NR==271:这是在第271行执行我们的操作
  • 我们的行动是迭代由空格分隔的行的每个字段。当我们遇到Lost字段时,我们会抓取它后面的第二个字段(因为我们之间需要跳过=
  • 使用命令替换$(..)而不是反引号。

答案 1 :(得分:0)

获取丢失数据包的数量:

awk '/Packets: Sent/{print $10}' file
0