14/6/13

Edicion de archivos en Linux

Hoy me paso esto:

Necesitaba hacer un ping sweep a un rango en particular de direcciones IP, pero el resultado, como se comprenderá, viene lleno de basura que nadie necesita. Lo que yo necesito son solo las direcciones IP:


# nmap -sP 190.250.153.0/24

Starting Nmap 6.01 ( http://nmap.org ) at 2013-06-14 23:37 EDT
Nmap scan report for static-adsl190-250-153-0.une.net.co (190.250.153.0)
Host is up (0.0019s latency).
Nmap scan report for static-adsl190-250-153-1.une.net.co (190.250.153.1)
Host is up (0.053s latency).
Nmap scan report for static-adsl190-250-153-2.une.net.co (190.250.153.2)
Host is up (0.00020s latency).
Nmap scan report for static-adsl190-250-153-3.une.net.co (190.250.153.3)
Host is up (0.29s latency).
Nmap scan report for static-adsl190-250-153-4.une.net.co (190.250.153.4)
Host is up (0.00017s latency).
Nmap scan report for static-adsl190-250-153-5.une.net.co (190.250.153.5)
Host is up (0.00038s latency).
Nmap scan report for static-adsl190-250-153-6.une.net.co (190.250.153.6)

Para barrer un poquito, se usa el famosísimo grep para que nos filtre solo las líneas que tienen direcciones IP. Voy a usar la palabra for ya que está en esa línea.

El resultado seria algo como esto:

# nmap -sP 190.250.153.0/24 | grep "for" 
Nmap scan report for static-adsl190-250-153-0.une.net.co (190.250.153.0)
Nmap scan report for static-adsl190-250-153-1.une.net.co (190.250.153.1)
Nmap scan report for static-adsl190-250-153-2.une.net.co (190.250.153.2)
Nmap scan report for static-adsl190-250-153-3.une.net.co (190.250.153.3)
Nmap scan report for static-adsl190-250-153-4.une.net.co (190.250.153.4)
Nmap scan report for static-adsl190-250-153-5.une.net.co (190.250.153.5)
Nmap scan report for static-adsl190-250-153-6.une.net.co (190.250.153.6)
Nmap scan report for static-adsl190-250-153-7.une.net.co (190.250.153.7)
Nmap scan report for static-adsl190-250-153-8.une.net.co (190.250.153.8)
Nmap scan report for static-adsl190-250-153-9.une.net.co (190.250.153.9)

Seguimos quitando cosas; con el comando cut, podemos quitar columnas enteras.
La opción -d le dice que las columnas están separadas por algo, un espacio en este caso. La opción -f  le dice cuál columna quiero cortar; es decir:

# nmap -sP 190.250.153.0/24 | grep "for" | cut -d" " -f6
(190.250.153.0)
(190.250.153.1)
(190.250.153.2)





(190.250.153.8)
(190.250.153.9)
(190.250.153.10)
(190.250.153.11)


Si, quedan lineas en blanco ¬_¬

Para quitar las lineas en blanco:
sed '/^$d/' <archivo>
(190.250.153.0)
(190.250.153.1)
(190.250.153.2)
(190.250.153.3)
(190.250.153.4)
(190.250.153.5)
(190.250.153.6)
(190.250.153.7)
(190.250.153.8)
(190.250.153.9)
(190.250.153.10)
(190.250.153.11)


Para quitar los parentesis:
sed 's/(//g' archivo
sed 's/(//g' archivo

Y listo:
190.250.153.0
190.250.153.1
190.250.153.2
190.250.153.3
190.250.153.4
190.250.153.5
190.250.153.6
190.250.153.7
190.250.153.8
190.250.153.9
190.250.153.10

Si, en excel es mas facil pero a veces no hay excel a la mano. A veces solo hay bash :P

No hay comentarios:

Publicar un comentario