我的代码在下面提取“国家”,但我怎样才能提取“城市” 第二排?
geoiplookup 212.58.246.82 | grep Country | cut -c 28-45
GeoIP Country Edition: GB, United Kingdom
GeoIP City Edition, Rev 1: GB, N7, Tadworth, N/A, 51.283298, -0.233300, 0, 0
GeoIP City Edition, Rev 0: GB, N7, Tadworth, N/A, 51.283298, -0.233300
我希望我的输出看起来像这样 - >城市,国家
例如:英国塔德沃思
我的代码目前只给我英国
答案 0 :(得分:2)
geoiplookup
正在生成以逗号分隔的输出。在使用cut
命令时,按列号尝试提取数据将非常脆弱。 cut
与字段分隔符 - 或awk
或高级脚本语言 - 将更加灵活。例如,以下awk
脚本将大致执行您想要的操作:
BEGIN {FS=":"}
/GeoIP Country Edition/ {
split($2, parts, ", ")
country_code=parts[1]
country_name=parts[2]
}
/GeoIP City Edition/ {
split($2, parts, ", ")
city_name=parts[3]
printf "%s, %s\n", city_name, country_name
}
我们首先将每一行拆分为标签,并用:
分隔数据。
然后在数据中,我们拆分,
并提取相关字段。
答案 1 :(得分:0)
试试这个
geoiplookup 212.58.246.82 | cut -d' ' -f2 | tr "\n" ","