Czy istnieje sposób na symulowanie polecenia * nix tail w wierszu poleceń systemu Windows? Mam plik i chcę wyciąć pierwsze n wierszy tekstu. Na przykład:
D:\>type file.txt
line one
line two
line three
D:\>*[call to tail]* > result.txt
D:\>type result.txt
line two
line three
windows
command-line
Chris Smith
źródło
źródło
head
wyświetla tylko pierwszych n wierszy zamiast je pomijać?head
, ale żądane wyjście wyglądało tak, jakby tego brakowałotail
. Wygląda na to, że odpowiedzi dotyczą,head
a nietail
.tail
, jednak tytuł mówiłhead
Odpowiedzi:
Brak dokładnego odpowiednika. Jednak istnieje natywne polecenie DOS „more”, które ma opcję + n, która rozpocznie wypisywanie pliku po n-tym wierszu:
Komunikat DOS:
Powyższe polecenie wyświetli wszystko po pierwszych 2 wierszach.
W rzeczywistości jest to odwrotność głowy Uniksa :
Konsola Unix:
Powyższe polecenie wydrukuje tylko pierwsze 2 wiersze pliku.
źródło
tail
zaczyna odliczać od końca pliku. Więctail -2
wydrukuje ostatnie dwie linie.-2
nie jest liczbą ujemną. To tylko skrócona wersja-n 2
(liczba wierszy). Niestety, zbyt wiele implementacjitail
nie obsługuje-2
, co jest bardzo niespójne z towarzyszącymihead
implementacjami, które to obsługują . Zbyt wiele razy mnie to irytowało.head -n -2
czym różni się odhead -n 2
. Ale z ogonem ten drugi nie istnieje.Jeśli masz zainstalowany program Windows PowerShell (myślę, że jest dołączony od XP), możesz po prostu uruchomić z cmd.exe:
Dowództwo:
Ogonowa komenda:
lub bezpośrednio z PowerShell:
aktualizacja
PowerShell 3.0 (Windows 8 i nowsze) dodano
Tail
polecenie z aliasemLast
.Head
iFirst
aliasy doTotalCount
zostały również dodane.Tak więc polecenia można ponownie zapisać jako
źródło
head
zamiasttail
?Get-Content
ma teraz polecenie tail. Na przykładGet-content -Tail 5 file.txt
wydrukuje pięć ostatnich wierszy pliku file.txt. Przy okazji, dziękujemy za zaktualizowanie odpowiedzi.gdzie n = liczba wierszy do wyświetlenia. Działa szybko i jest dokładnie taki sam jak
head
polecenie.źródło
Można dostać Coreutils z GnuWin32 , która jest zbiorem standardowych narzędzi Unix, przeniesione do systemu Windows.
Zawiera między innymi głowę.
źródło
To totalny hack, ale jeśli jest to ogromny plik, który chcesz po prostu sprawdzić format, nagłówek itp. I szukasz rozwiązania, zawsze możesz po prostu przekierować wyjście „więcej” do nowego pliku i CTRL-C szybko. Wiersze wyjściowe nie mogą być precyzyjnie kontrolowane i najprawdopodobniej zabijesz je w środku linii wyjścia, ale jest to tani sposób na przechwycenie małego fragmentu pliku, który w innym przypadku nie nadaje się do użytku.
Dawny.
źródło
Cóż, będzie to zrobić , ale to o tak szybko, jak to wygląda (mniej więcej O (N * m), gdzie n to liczba linii do wyświetlania i m to całkowita liczba linii w pliku):
Gdzie „10” to liczba wierszy, które chcesz wydrukować, a „nazwa pliku” to nazwa pliku.
źródło
head
.(expr) > out.txt
- podczas wysyłania wyników do pliku, w przeciwnym razie otrzymasz tylko ostatnią linię. Lub dołącz -expr >> out.txt
.Powershell:
źródło
Używając więcej + n, o których Matt już wspomniał, aby uniknąć przerw w długich plikach, spróbuj tego:
więcej +1 myfile.txt> con
Kiedy przekierowujesz wyjście z more, nie zatrzymuje się - i tutaj przekierowujesz do konsoli. Możesz w podobny sposób przekierować do innego pliku, takiego jak ten, bez dodatkowych przerw, jeśli jest to pożądany efekt końcowy. Użyj>, aby przekierować do pliku i nadpisać go, jeśli już istnieje, lub >>, aby dołączyć do istniejącego pliku. (Można użyć do przekierowania do konta).
źródło
Możesz także użyć Git bash, gdzie emulowane są również głowa i ogon
źródło
Get-content -Tail n file.txt
z PowerShell to jedyna rzecz, która zbliża się dotail
Linuksa.Get-Content *filename* | Select-Object -last *n*
Zasugerowano powyżej ładunku / analizować całość. Nie trzeba dodawać, że nie był zadowolony z mojego pliku dziennika o pojemności 10 GB ...-Tail
Opcja zaczyna się na końcu pliku.źródło
Jeśli potrzebujesz polecenia head, jednym prostym sposobem na jego uzyskanie jest zainstalowanie Cygwin. Wtedy będziesz miał do dyspozycji wszystkie narzędzia UNIX.
Jeśli to nie jest dobre rozwiązanie, możesz spróbować użyć funkcji findstr i wyszukać wskaźnik końca linii.
findstr w witrynie MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
źródło
Oto szybkie natywne polecenie head, które daje pierwsze 9 linii w DOS.
Pierwsze 2 znaki w każdym wierszu to numer wiersza.
źródło
Istnieje zestaw zasobów, który można pobrać stąd: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
Zawiera narzędzie tail.exe, ale jest kompatybilne tylko z niektórymi wersjami systemu Windows
(Skopiowano z tego postu: Polecenie Tail dla Windows )
źródło
w PS spróbuj użyć polecenia:
To polecenie może być również przetwarzane potokowo.
Przykład uzyskania pierwszej linii:
lub aby uzyskać pierwszą linię:
źródło
FWIW, dla tych, którzy muszą po prostu wyciąć nieokreśloną liczbę rekordów z nagłówka pliku, więcej> działa dobrze. Jest to przydatne po prostu mieć mniejszy plik do pracy na wczesnych etapach tworzenia czegoś.
źródło
Nie próbowałem wyodrębnić zakresu, ale udało mi się uzyskać wiersz za pomocą następującego polecenia DOS:
Ponieważ większość plików zawiera spacje, to polecenie pobiera każdy wiersz ze wszystkich plików LOG i zasadniczo numeruje je, zaczynając od 1 dla każdego pliku. Ponumerowane wyniki są następnie przesyłane do drugiego
FIND
polecenia, które szuka linii oznaczonej jako numer 6.źródło
Na tej stronie znajduje się bezpłatne
head
narzędzie , z którego możesz skorzystać. Jeszcze tego nie próbowałem.źródło
zwróci pierwszą linię twojego pliku w cmd Windows w zmiennej% line%.
źródło
Jeśli chodzi o współczesną odpowiedź, w systemie Windows 10 można użyć „Podsystemu Linux dla Windows”.
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Umożliwi to uruchamianie natywnych poleceń Linuksa z poziomu systemu Windows, a tym samym wykonywanie dokładnie tak, jak w systemie Linux.
źródło
Myślę, że nie ma wyjścia po wyjęciu z pudełka. Nie ma takiego polecenia w DOS, a pliki wsadowe są ograniczone do symulacji (bez większego bólu).
źródło
Ostrzeżenie, używanie możliwości pliku wsadowego dla, tokenów i separatorów przy wprowadzaniu nieznanego tekstu może być katastrofą ze względu na specjalną interpretację znaków, takich jak &,!, <Itd. Takie metody powinny być zarezerwowane tylko dla przewidywalnego tekstu.
źródło