0

以下のコードは「国」を抽出しますが、2行目の「都市」もどのように抽出しますか?

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

出力を次のようにしたい->都市、国

例:イギリス、タッドワース

私のコードは現在私にイギリスを与えています

4

2 に答える 2

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
          }

まず、各行を。で区切られたラベルとデータに分割し:ます。次に、データ内で,、関連するフィールドを分割して抽出します。

于 2012-04-24T00:58:16.093 に答える
0

これを試して

geoiplookup 212.58.246.82 | cut -d' ' -f2 | tr "\n" ","
于 2012-04-26T19:55:46.340 に答える