2012-04-24 49 views
0

我的代碼在下面摘錄'國家',但我怎樣才能在 第二行提取'城市'?從兩個不同的行切割命令

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 

我想我的輸出看起來像這樣 - >城市,國家

例如:塔德沃思,英國

我的代碼目前只是給了我英國

+2

你能告訴我們一點關於你想做什麼?在你的例子中,你正在用逗號分隔輸出行的列號提取數據。有可能有更好的方法來做任何你想做的事情。 – larsks 2012-04-24 00:46:23

+0

請編輯您的問題以包含您的輸出。 – kev 2012-04-24 00:48:59

+0

你可能想看看這個'awk'。 – 2012-04-24 00:57:26

回答

2

geoiplookup正在生成逗號分隔輸出。按照列號嘗試提取數據,就像你對cut命令所做的那樣,將會非常脆弱。帶場分隔符的cutawk或高級腳本語言將變得更加靈活。例如,下面的腳本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 
      } 

我們首先分割每行到一個標籤,並通過:分隔的數據。 然後在數據中,我們拆分了,並提取相關字段。

+0

larsks,很好地完成。我可以看到你現在已經腳本化了一段時間了。這將工作。謝謝! – Jim 2012-04-24 01:05:58

0

試試這個

geoiplookup 212.58.246.82 | cut -d' ' -f2 | tr "\n" ","