从字符串linux获取键值

时间:2017-06-27 01:11:09

标签: linux shell

我在做:

dig  @example.com hostname.example.com | grep ANSWER:

返回输出

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

如何使用pipe来获取变量中的答案计数。

var=$(dig  @example.com hostname.example.com | grep ANSWER:|....?...)

2 个答案:

答案 0 :(得分:2)

使用linePath = new LinePath<>(wayPoints, isPathOpen); FollowPath<Vector2, LinePath.LinePathParam> followPathSB = new FollowPath<>(character, linePath ,30f) // .setTimeToTarget(0.1f) // .setArrivalTolerance(0.001f) // .setDecelerationRadius(80); character.setSteeringBehavior(followPathSB); 。然后,您可以遍历列,找到awk的列,然后打印下一列。

ANSWER:

答案 1 :(得分:1)

您可以像这样使用awk

dig @8.8.8.8 www.example.com | awk '/ANSWER:/{print $2}' RS=,

这里的关键是使用,作为输入记录分隔符。了解使用awk时输入记录如何显示RS=,

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 www.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY
 status: NOERROR
 id: 49711
;; flags: qr rd ra ad; QUERY: 1
 ANSWER: 1       <----- Look here! The ANSWER: is a separate record
 AUTHORITY: 0
 ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0
 flags:; udp: 512
;; QUESTION SECTION:
;www.example.com.       IN  A

;; ANSWER SECTION:
www.example.com.    74953   IN  A   93.184.216.34

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jun 27 03:40:13 CEST 2017
;; MSG SIZE  rcvd: 60

ANSWER: N部分是一个单独的记录。现在,我们只需使用正则表达式过滤/ANSWER:/记录,然后使用print $2打印该行的第二列。

PS:sed替代方案是:

dig @8.8.8.8 www.example.com | sed -rn '/(.*ANSWER: )([0-9]+)(.*)/s//\2/p'