awk删除特定字符

时间:2016-01-05 18:01:54

标签: bash awk

我有命令,它给我输入telnet。来自telnet的完整输出它看起来像这样:

telnet myserver.com 1234
  

服务器,名称= MyServer,年龄= 123,Ver = 1.23,...,...,...

此命令应仅过滤年龄后的数字 - "年龄= 123 "我想过滤:

echo "\n" | nc myserver.com 1234 | (awk -F "=" '{print $3}')

而不是 123 它给了我这个输出:

  

123,Ver

年龄=

之后,有没有办法获得正确数字?

它只是糟糕的awk过滤参数,但是我尝试了一些其他的awk方法,但这给了我几乎最好的结果......谢谢你的帮助。

编辑:我忘记了,年龄=每天动态+1后的数字......

3 个答案:

答案 0 :(得分:2)

我不确定echo "\n"部分,但我认为这应该做你想做的事情:

nc myserver.com 1234 | awk -F "," '{ split($3, a, /=/); print a[2] }'

我没有在=分割成字段,而是在,上完成了。然后将第三个字段拆分为a上的数组=,并打印后半部分。

我还删除了awk调用周围的( ),这不必要地创建了一个子shell。

如果您对在其他地方包含=,的响应永不变化有信心,可以进一步简化awk表达式:

awk -F'[=,]' '{ print $5 }'

括号表达式允许在=,上拆分字段,使您对第五个字段感兴趣的部分。

答案 1 :(得分:0)

您可以运行两次awk命令。

awk -F "=" '{print $3}'|awk -F "," '{print $1}'

您也可以使用剪切命令:

cut -d "=" -f 3|cut -d "," -f 1

答案 2 :(得分:0)

echo "\n" | nc myserver.com 1234 | awk -F "," '{print substr($3,6)}'