Potrzebuję odpowiednika head
polecenia Unix (wyświetl pierwsze N wierszy wyniku). Z tego obecnie korzystam:
tasklist | find /N " " | findstr /r \[[0-9]\]
Powyższy kod wyświetla pierwsze 10 wierszy tasklist
wyniku. find /N " "
wstawia numer linii na początek każdej linii, a findstr /r \[[0-9]\]
wypakowuje pierwsze 10 linii za pomocą wyrażenia regularnego.
Powyższy kod działa, ale muszę podać dowolny zakres . Z uwagi na fakt, że wyrażenia regularne nie są implementowane zgodnie ze standardami w systemie Windows, nic innego nie działa.
Jak mogę wyodrębnić dowolne linie z wyjścia cmd? Ważne jest, aby to zrobić za pomocą jednej wkładki. Bez skryptów!
Odpowiedzi:
PowerShell.
PS C:\> netstat | Select -First 20
Edycja: Mam wrażenie, że nalegasz, abyś mógł używać tylko cmd.exe około 1989 roku, ale to nieprawda. Powershell jest wypiekany do każdej wersji systemu operacyjnego Vista + i można go zainstalować na XP / 2003. To jest przyszłość Windows.
Edycja: Dobra, miej to na swój sposób.
Wyświetli pierwsze 10 wierszy wyniku polecenia netstat.
źródło
Jeśli jesteś osobą typu Unix, być może instalacja CygWin zapewni ci bardziej znane środowisko.
źródło
Istnieje proste rozwiązanie, które jest znacznie łatwiejsze niż użycie
for
pętli „ ”.Weźmy jako przykład dane wyjściowe z
dir/o-d
(dir
odwrotnie uporządkowane według daty).Np. Jeśli chcesz wypisać linie od 1 do 16, użyj:
Np. Jeśli chcesz wypisać linie od 16 do 45, użyj:
Przykładowe dane wyjściowe:
Awaria:
findstr
wyrażenie regularne faktycznie działa poprawnie. Twój problem polega na ucieczce . (Szczegółowe informacje znajdują się w dokumentacji Roba ).Najpierw zrzuć cały wynik za pomocą
dir/o-d
.Następnie wstaw każdą linię za pomocą „
$Num:
”findstr/n ^^
^
oznacza dopasowanie początku linii i^^
jest po prostu jego wymaganą wersją, ponieważ jesteśmy w cmd.Uwaga: musisz użyć
findstr
do tego, ponieważfind/n" "
nie będzie pasować linii bez spacji`.Na koniec przytnij dane wyjściowe za pomocą
findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.^1[6-9]:
jest wyrażeniem regularnym dla 16 do 19.^[2-3][0-9]:
jest wyrażeniem regularnym dla 20 - 39.^4[0-5]:
jest wyrażeniem regularnym dla 40 do 45.findstr "a b c"
środki znaleźć ciągi, które pasują zarówno wyrażeniaa
,b
lubc
.Zobacz także /programming//q/8844868/632951
źródło
findstr
nie można usunąć rzeczy. Myślę, że w takim przypadku możesz być zmuszony do użycia pętli.To jedno-wierszowe polecenie, mam nadzieję, że zadziała również dla ciebie.
źródło