PDA

View Full Version : aiuto con grep e sed in uno script


david82
26-04-2014, 14:56
un saluto a tutti.
avrei bisogno di un aiutino per creare uno script.

partenza: un file con una lista di ip.
risultato: lista ip con a fianco regione e città.

col comando
lynx -dump http://whatismyipaddress.com/ip/xxxxxx | grep City
ottengo
City: Rome

1. che comando per ottenere le 3 righe così?
Country: Italy it flag
State/Region: Lazio
City: Rome

2. come ottenere il risultato così da un file con tanti ip?
xxx.xxx.xxx.xxx; italy; lazio; roma
xxx.xxx.xxx.xxx; italy; piemonte; torino
xxx.xxx.xxx.xxx; italy; lombardia; milano

grazie mille!


ps se conoscete un altro sito più veloce, suggerite pure...

sacarde
26-04-2014, 15:49
se ti puo aiutare:


con


lynx -dump http://whatismyipaddress.com/ip/151.49.38.55 | grep -E 'City|State|Country'

filtri le 3 righe

david82
26-04-2014, 17:23
se ti puo aiutare:


con


lynx -dump http://whatismyipaddress.com/ip/151.49.38.55 | grep -E 'City|State|Country'

filtri le 3 righe

ottimo aiuto!! grazie!

mi hai velocizzato il lavoro OK!

se poi qualcuno sa come fare il resto, ancora meglio. :)

david82
26-04-2014, 17:48
per ora ho questo:

echo "inserisci ip: "
read ip
lynx -dump http://whatismyipaddress.com/ip/$ip | grep -E 'City|State|Country'

metto l'ip, mi da il risultato ed esce.
mi piacerebbe che rimanesse dentro, mi desse le informazioni e tornasse su a chiedermi un nuovo ip, finché non gli scrivo "fine".



edit:
per ora ho risolto con un poco elegante:

ip=1
while [ $ip != "fine" ];
do
echo "inserisci ip:"
read ip
if [ $ip != "fine" ];
then
lynx -dump http://whatismyipaddress.com/ip/$ip | grep -E 'City|State|Country'
fi
done

eclissi83
27-04-2014, 12:01
per rispondere all'esigenza iniziale, mentre aspetto che si cuocia la pasta ho buttato giu' questo scriptino basilare:

#!/bin/bash
# Variabili - inserire i file di input per gli ip e l'output
IP_LIST=listaip.txt
OUTPUT=risultato.txt
# Fine Variabili

# Codice
for IP in `cat $IP_LIST`; do
echo $IP: `lynx -dump http://whatismyipaddress.com/ip/$IP | egrep '(City|State|Country)' | cut -d : -f 2 | sed s/$/\;\ / | sed 's/^[ \t]*//;s/[ \t]*$//' | tr -d '\n'` >> $OUTPUT;
done

spero ti serva.

ciao

david82
27-04-2014, 15:10
per rispondere all'esigenza iniziale, mentre aspetto che si cuocia la pasta ho buttato giu' questo scriptino basilare:

#!/bin/bash
# Variabili - inserire i file di input per gli ip e l'output
IP_LIST=listaip.txt
OUTPUT=risultato.txt
# Fine Variabili

# Codice
for IP in `cat $IP_LIST`; do
echo $IP: `lynx -dump http://whatismyipaddress.com/ip/$IP | egrep '(City|State|Country)' | cut -d : -f 2 | sed s/$/\;\ / | sed 's/^[ \t]*//;s/[ \t]*$//' | tr -d '\n'` >> $OUTPUT;
done

spero ti serva.

ciao

ok, quasi perfetto, grazie!!! :)

per ogni ip ottengo questo:
77.231.161.137: Spain es flag;Catalonia;Barcelona;

per la perfezione mi servirebbe questo
77.231.161.137;Spain;Catalonia;Barcelona

la cosa principale è il ; al posto dei : per poterlo importare su excel.
il resto sono dettagli, non sono necessari...

edit: anzi, è perfetto così!!!
uso il : come separatore e tutto il resto in un'unica cella! ;)

eclissi83
27-04-2014, 19:36
ok, quasi perfetto, grazie!!! :)

prego!


per ogni ip ottengo questo:
77.231.161.137: Spain es flag;Catalonia;Barcelona;

per la perfezione mi servirebbe questo
77.231.161.137;Spain;Catalonia;Barcelona

la cosa principale è il ; al posto dei : per poterlo importare su excel.
il resto sono dettagli, non sono necessari...

per il ; dopo l'IP puoi cambiare la echo nel ciclo for...

per quanto riguarda il flag, la vedo piu' difficile...

david82
27-04-2014, 19:52
prego!


per il ; dopo l'IP puoi cambiare la echo nel ciclo for...

per quanto riguarda il flag, la vedo piu' difficile...

ah, trovato!! non ci avevo fatto caso, avevo provato a sostituire quello che c'era dopo. :fagiano:
ovviamente non funzionava e mi son detto "non toccare niente!!!". :D

cmq va benissimo così, grazie 1000!!!