Eu preciso de um equivalente ao head
comando Unix (exibir as primeiras N linhas da saída). Isto é o que estou usando atualmente:
tasklist | find /N " " | findstr /r \[[0-9]\]
O código acima exibe as 10 primeiras linhas de tasklist
saída. find /N " "
precede um número de linha no início de cada linha enquanto findstr /r \[[0-9]\]
extrai as 10 primeiras linhas usando regex.
O código acima funciona, mas preciso especificar qualquer intervalo . Devido ao fato de que expressões regulares não são implementadas de acordo com os padrões do Windows, não consigo fazer com que mais nada funcione.
Como posso extrair linhas arbitrárias de uma saída cmd? É importante fazer isso com uma linha. Sem scripts!
Respostas:
Powershell.
PS C:\> netstat | Select -First 20
Edit: Tenho a sensação de que você insistirá em usar o cmd.exe por volta de 1989, mas isso não é verdade. O Powershell é instalado em todas as versões do sistema operacional Vista + e é instalável no XP / 2003. Ele é o futuro do Windows.
Edit: Tudo bem, faça do seu jeito.
Irá exibir as 10 primeiras linhas da saída do netstat.
fonte
Se você é do tipo Unix, talvez a instalação do CygWin ofereça um ambiente mais familiar.
fonte
Existe uma solução fácil que é muito mais fácil do que usar o
for
loop " ".Vamos pegar a saída de
dir/o-d
(ordemdir
inversa por data) como exemplo.Por exemplo, se você deseja gerar as linhas 1 a 16, use:
Por exemplo, se você deseja gerar as linhas 16 a 45, use:
Saída de amostra:
Demolir:
findstr
o regex do está realmente funcionando corretamente. Seu problema é escapar . (Consulte a referência de Rob para obter detalhes.)Primeiro, despeje toda a saída usando
dir/o-d
.Em seguida, anteceda cada linha com "
$Num:
" usandofindstr/n ^^
^
significa coincidir com o início da linha e^^
é simplesmente a versão escapada necessária porque estamos no cmd.Nota: você precisa usar
findstr
para isso, porquefind/n" "
não corresponderá a linhas sem espaços`.Por fim, corte a saída usando
findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.^1[6-9]:
é regex para 16 a 19.^[2-3][0-9]:
é regex para 20 - 39.^4[0-5]:
é regex para 40 a 45.findstr "a b c"
meios encontrar cordas que correspondem tanto expressõesa
,b
, ouc
.Consulte também /programming//q/8844868/632951
fonte
findstr
não pode remover coisas. Eu acho que você pode ser forçado a usar um loop nesse caso.Este é um comando de uma linha, espero que funcione para você também.
fonte