我是初次使用正则表达式,但想知道我们是否可以使用任何正则表达式进行下面的捕获。我希望看到" A"在下面的日志中。
3 0.238497 x.x.x.x -> x.x.x.x DNS 101 Standard query 0xab5d A servicesx.x.x.x
6 0.241131 x.x.x.x -> x.x.x.x DNS 117 Standard query response 0xab5d A x.x.x.x
7 0.407185 x.x.x.x -> x.x.x.x DNS 100 Standard query 0x7699 A vipservices-x.x.x.x
8 0.409849 x.x.x.x -> x.x.x.x DNS 116 Standard query response 0x7699 A x.x.x.x
9 2.905559 x.x.x.x -> x.x.x.x DNS 101 Standard query 0x9c5d A servicesx.x.x.x
10 2.908308 x.x.x.x -> x.x.x.x DNS 117 Standard query response 0x9c5d A x.x.x.x
11 3.261304 x.x.x.x -> x.x.x.x DNS 101 Standard query 0x9575 A servicesx.x.x.x
12 3.263582 x.x.x.x -> x.x.x.x DNS 117 Standard query response 0x9575 A x.x.x.x
13 4.898380 x.x.x.x -> x.x.x.x DNS 101 Standard query 0x451a A servicesx.x.x.x
14 4.900842 x.x.x.x -> x.x.x.x DNS 117 Standard query response 0x451a A x.x.x.x
15 5.406778 x.x.x.x -> x.x.x.x DNS 100 Standard query 0x4f52 A vipservices-x.x.x.x
我想输出类似的东西。
A servicesx.x.x.x
A vipservices-x.x.x.x
A servicesx.x.x.x
任何领导都将不胜感激。
答案 0 :(得分:0)
$ awk '{if(match($NF,"service")!=0) print $(NF-1),$NF}' file
A servicesx.x.x.x
A vipservices-x.x.x.x
A servicesx.x.x.x
A servicesx.x.x.x
A servicesx.x.x.x
A vipservices-x.x.x.x
如果最后一个字段与模式"service"
匹配,则打印$(NF-1) & $NF
答案 1 :(得分:0)
尝试:
awk '$NF ~ /services/{print $(NF-1),$NF}' Input_file
检查行的最后一个字段是否包含服务字符串,如果是,则打印该行的倒数第二个字段和最后一个字段。
答案 2 :(得分:0)
打印所有内容,然后打印A,包括A.
grep -o 'A.*' inputFile
grep
解决方案:使用-o
标志打印仅匹配的字符串。
grep -o 'A.*service.*' inputFile
A servicesx.x.x.x
A vipservices-x.x.x.x
A servicesx.x.x.x
A servicesx.x.x.x
A servicesx.x.x.x
A vipservices-x.x.x.x
A.*service.*
:表示A后跟零个或多个字符,后跟服务,后跟所有内容。
答案 3 :(得分:0)
健壮,便携,高效地打印来自您A
的所有内容:
awk '$(NF-1) == "A" { print $(NF-1}, $NF }' file
否则至少可以移植到所有UNIX系统的正则表达式解决方案将是:
sed -n '/.*A/A/p' file