Strona 1 z 1

[+] Perl - określona kolumna z tablicy

: 23 października 2013, 20:13
autor: markossx
Hej.

Mam drobny problem z wyciągnięciem kolumny z tablicy.

Kod: Zaznacz cały

my @cmd = `netstat -vatnp | grep -E '10.8'`;
Dostaję:

Kod: Zaznacz cały

tcp   0   0   192.168.10.10:35612    192.168.10.8:3846      ESTABLISHED 3235/process
Potrzebuję piątą kolumnę z wyniku, bez zapisywania do plików.
Jak to ogarnąć?

: 23 października 2013, 21:34
autor: drekkett

Kod: Zaznacz cały

my @cmd = `netstat -vatnp | grep -E '10.8' |cut -d ' ' -f5`;
Powinno załatwić sprawę.

: 24 października 2013, 10:45
autor: mtp
Powinno być:

Kod: Zaznacz cały

 my @cmd = `netstat -vatnp | grep '10.8' |tr -s ' '|cut -d ' ' -f5`;
lub

Kod: Zaznacz cały

 my @cmd = `netstat -vatnp  |awk '{if (\$5 ~ /10\.8/) print \$5}'`;

: 24 października 2013, 11:45
autor: markossx
Dzięki Panowie :)
Działa opcja mtp z cut. Podoba mi się użycie awk w tym miejscu ale zarówno moje próby
jak i podpowiedź mtp zwracają
Use of uninitialized value $5 in concatenation (.) or string at
./conn-checker.pl line 14
Interpretuje zmienną awk jak swoją własną.

: 24 października 2013, 12:31
autor: mtp
Tak racja, mój błąd, poprawiłem.

Natomiast jeśli chciałbyś podzielić tak jak pisałeś w pierwszym wpisie to:

Kod: Zaznacz cały

my @cmd = `netstat -vatnp`;

foreach $line (@cmd){
@a=split (" ",$line);
if (@a[4] =~/10\.8/) {print "@a[4] \n"};
}
Weź uwagę na to, że to co Ci napisałem sprawdza czy adres IP którego szukasz znajduje się w piątej kolumnie.

: 24 października 2013, 14:21
autor: markossx
Świetne, instruktywne wyjaśnienie, dzięki.