-
Notifications
You must be signed in to change notification settings - Fork 0
/
grep-ip.pl
38 lines (34 loc) · 979 Bytes
/
grep-ip.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use warnings;
# Mostrar mensaje de ayuda si no se pasa ningún argumento ni hay entrada estándar
if (!@ARGV && -t STDIN) {
print "Uso: $0 [archivo] o mediante una tubería\n";
print "Ejemplo 1: cat ips.txt | $0\n";
print "Ejemplo 2: $0 ips.txt\n";
exit 1;
}
# Función para procesar líneas y extraer IPs
sub extract_ips {
my $line = shift;
if ($line =~ /(\d+\.\d+\.\d+\.\d+)/) {
print "$1\n";
}
}
# Leer de archivo pasado como argumento o de entrada estándar (tubería)
if (@ARGV) {
# Procesar archivos pasados como argumento
foreach my $file (@ARGV) {
open my $fh, '<', $file or die "No se puede abrir el archivo '$file': $!";
while (my $line = <$fh>) {
extract_ips($line);
}
close $fh;
}
} else {
# Procesar la entrada estándar
while (my $line = <STDIN>) {
extract_ips($line);
}
}
# perl -nle'/(\d+\.\d+\.\d+\.\d+)/ && print $1'