Potrzebujesz pomocy z C, C++, perl, python, itp.
-
markossx
- Beginner
- Posty: 489
- Rejestracja: 26 maja 2007, 16:01
- Lokalizacja: Polska
Post
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ąć?
-
drekkett
- Posty: 17
- Rejestracja: 24 lipca 2008, 22:01
Post
autor: drekkett »
Kod: Zaznacz cały
my @cmd = `netstat -vatnp | grep -E '10.8' |cut -d ' ' -f5`;
Powinno załatwić sprawę.
-
mtp
- Posty: 10
- Rejestracja: 16 października 2013, 13:58
Post
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}'`;
-
markossx
- Beginner
- Posty: 489
- Rejestracja: 26 maja 2007, 16:01
- Lokalizacja: Polska
Post
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ą.
-
mtp
- Posty: 10
- Rejestracja: 16 października 2013, 13:58
Post
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.
-
markossx
- Beginner
- Posty: 489
- Rejestracja: 26 maja 2007, 16:01
- Lokalizacja: Polska
Post
autor: markossx »
Świetne, instruktywne wyjaśnienie, dzięki.