Existe uma maneira de simular o comando * nix tail na linha de comando do Windows? Eu tenho um arquivo e quero uma maneira de cortar as primeiras n linhas de texto. Por exemplo:
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
fonte
fonte
head
mostra apenas as primeiras n linhas em vez de deixá-las de fora?head
comando estilo Unix , mas a saída desejada parecia estar faltandotail
. Parece que as respostas são sobrehead
e nãotail
.tail
, no entanto, o título diziahead
Respostas:
Nenhum equivalente exato. No entanto, existe um comando DOS nativo "more" que tem uma opção + n que iniciará a saída do arquivo após a enésima linha:
Prompt do DOS:
O comando acima irá mostrar tudo após as primeiras 2 linhas.
Este é realmente o inverso da cabeça do Unix :
Console Unix:
O comando acima imprimirá apenas as 2 primeiras linhas do arquivo.
fonte
tail
começa a contar a partir do final do arquivo. Portanto,tail -2
imprimiremos as duas últimas linhas.-2
não é negativo. É apenas uma versão abreviada de-n 2
(número de linhas). Infelizmente, muitas implementações detail
não suportam-2
, tornando-o muito inconsistente com ashead
implementações que o acompanham . Isso me irritou muitas vezes.head -n -2
que é diferente dehead -n 2
. Mas com cauda, esta última não existe.SE você tiver o Windows PowerShell instalado (acho que está incluído desde o XP), você pode apenas executar a partir do cmd.exe:
Comando de cabeça:
Comando de cauda:
ou, diretamente do PowerShell:
atualizar
PowerShell 3.0 (Windows 8 e superior) adicionou
Tail
comando com aliasLast
.Head
eFirst
aliases paraTotalCount
também foram adicionados.Portanto, os comandos podem ser reescritos como
fonte
head
vez detail
?Get-Content
tem um comando tail. Por exemplo,Get-content -Tail 5 file.txt
imprimirá as últimas cinco linhas de arquivo.txt. Obrigado por atualizar sua resposta btw.onde n = o número de linhas a serem exibidas. Funciona rápido e é exatamente como o
head
comando.fonte
Você pode obter CoreUtils do GnuWin32 , que é uma coleção de ferramentas padrão do Unix, portadas para o Windows.
Ele, entre outras coisas, contém cabeça.
fonte
Este é um hack total, mas se for um arquivo grande que você deseja apenas examinar o formato, cabeçalho, etc. e você está procurando uma solução, você pode sempre redirecionar a saída 'mais' para um novo arquivo e CTRL-C rapidamente. As linhas de saída não podem ser controladas com precisão e você provavelmente irá eliminá-lo no meio de uma linha de saída, mas é uma maneira barata de pegar um pequeno pedaço de um arquivo que de outra forma seria inutilizável.
Ex.
fonte
Bem, isso vai funcionar , mas é quase tão rápido quanto parece (aproximadamente O (n * m), onde n é o número de linhas a serem exibidas em é o número total de linhas no arquivo):
Onde "10" é o número de linhas que você deseja imprimir e "nome do arquivo" é o nome do arquivo.
fonte
head
.(expr) > out.txt
- ao enviar os resultados para um arquivo, ou você obterá apenas a última linha. Ou anexe -expr >> out.txt
.Powershell:
fonte
Ao usar mais + n que Matt já mencionou, para evitar pausas em arquivos longos, tente o seguinte:
mais +1 myfile.txt> con
Quando você redireciona a saída de more, ele não pausa - e aqui você redireciona para o console. Você pode redirecionar da mesma forma para algum outro arquivo como este sem as pausas de mais se esse for o resultado final desejado. Use> para redirecionar para o arquivo e sobrescrevê-lo se ele já existir, ou >> para anexar a um arquivo existente. (Pode ser usado para redirecionar para con.)
fonte
você também pode usar Git bash onde head e tail são emulados também
fonte
Get-content -Tail n file.txt
com o PowerShell é a única coisa que chega pertotail
no Linux.O
Get-Content *filename* | Select-Object -last *n*
sugerido acima carrega / analisa tudo. Nem é preciso dizer que não fiquei satisfeito com meu arquivo de log de 10 GB ... A-Tail
opção começa no final do arquivo.fonte
Se você deseja o comando head, uma maneira fácil de obtê-lo é instalar o Cygwin. Então você terá todas as ferramentas UNIX à sua disposição.
Se essa não for uma boa solução, você pode tentar usar findstr e fazer uma busca pelo indicador de fim de linha.
findstr no MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
fonte
Aqui está um comando head nativo rápido que fornece as primeiras 9 linhas no DOS.
Os primeiros 2 caracteres em cada linha serão o número da linha.
fonte
Há um kit de recursos que pode ser baixado aqui: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
Ele contém uma ferramenta tail.exe, mas só é compatível com algumas versões do Windows
(Copiado deste post: Comando Tail para janelas )
fonte
no PS tente usar o comando:
Este comando também pode ser canalizado.
Exemplo para obter a primeira linha:
ou para obter a primeira linha:
fonte
FWIW, para aqueles que precisam apenas cortar um número indeterminado de registros do cabeçalho do arquivo, more> funciona bem. Isso é útil apenas para ter um arquivo menor para trabalhar nos estágios iniciais de desenvolvimento.
fonte
Não tentei extrair um intervalo, mas consegui obter uma linha usando o seguinte comando do DOS:
Como a maioria dos arquivos contém espaços, este comando puxa todas as linhas de todos os arquivos de LOG e basicamente os numera começando em 1 para cada arquivo. Os resultados numerados são então canalizados para o segundo
FIND
comando que procura a linha marcada como o número 6.fonte
Há um
head
utilitário gratuito nesta página que você pode usar. Eu não tentei ainda.fonte
ele retornará a primeira linha do seu arquivo no cmd Windows na variável% line%.
fonte
Como uma resposta contemporânea, se estiver executando o Windows 10, você pode usar o "Subsistema Linux para Windows".
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Isso permitirá que você execute comandos nativos do Linux a partir do Windows e, portanto, execute o tail exatamente como faria no Linux.
fonte
Não acho que haja uma saída para a caixa. Esse comando não existe no DOS e os arquivos em lote são limitados para simulá-lo (sem maiores problemas).
fonte
Aviso, usar o arquivo em lote para, tokens e capacidade de delims na entrada de texto desconhecido pode ser um desastre devido à interpretação especial de caracteres como &,!, <, Etc. Tais métodos devem ser reservados apenas para texto previsível.
fonte