我在linux上运行geoiplookup命令,它提供以下内容:
[root@localhost temp]$ geoiplookup 8.8.8.8
GeoIP Country Edition: US, United States
GeoIP City Edition, Rev 1: US, N/A, N/A, N/A, 38.000000, -97.000000, 0, 0
GeoIP City Edition, Rev 0: US, N/A, N/A, N/A, 38.000000, -97.000000
GeoIP ASNum Edition: AS15169 Google Inc.
我希望输出在一行上并尝试过:
[root@localhost temp]$ geoiplookup 8.8.8.8 | sed '2,3d' | sed 's/^.*: /,/g' | sed '$!{:a;N;s/\n/\t/;ta}' | awk -F ',' '{print $4","$2}'
AS15169 Google Inc.,US
很抱歉让你误会。我想用更简单的方法将国家代码和ASNum保持为输出行。
与“AS15169 Google Inc.,US”一样
答案 0 :(得分:1)
答案 1 :(得分:1)
geoiplookup 8.8.8.8 | awk '/^GeoIP Country/{ sub(/,*$/, "", $4); c = $4; } sub(/^GeoIP ASNum Edition: /, ""){ print $0 "," c }'
预期产出:
AS15169 Google Inc.,US
编辑:sub
就足够了。无需转gsub
。
答案 2 :(得分:0)
这适合你吗?
geoiplookup 8.8.8.8 | sed '2,3d' | sed 's/^.*: /,/g' | sed '$!{:a;N;s/\n/\t/;ta}' | awk -F ',' '{print $8","$2}'
答案 3 :(得分:0)
一种非常简单的技术是:
echo $(geoiplookup 8.8.8.8)
请注意$(…)
命令替换周围没有双引号 - 与Capturing multiple line output to a bash
variable形成对比。