Ao tentar ler o número da versão de vim
, recebo muitas linhas adicionais que preciso ignorar. Tentei ler o manual do head
e tentei o seguinte comando:
vim --version | head -n 1
Eu quero saber se esta é a abordagem correta?
Ao tentar ler o número da versão de vim
, recebo muitas linhas adicionais que preciso ignorar. Tentei ler o manual do head
e tentei o seguinte comando:
vim --version | head -n 1
Eu quero saber se esta é a abordagem correta?
vim --version 2>&1 | sed 1q
:)
Verifique se o seu pacote gera essa informação, stderr
pois @WilliamPursell fornece uma verificação para
Respostas:
Sim, essa é uma maneira de obter a primeira linha de saída de um comando.
Se o comando resultar em qualquer erro padrão que você gostaria de capturar da mesma maneira, você precisará redirecionar o erro padrão do comando para o fluxo de saída padrão:
utility 2>&1 | head -n 1
Existem muitas outras maneiras de capturar a primeira linha também, incluindo sed 1q
(sair após a primeira linha), sed -n 1p
(imprimir apenas a primeira linha, mas ler tudo), awk 'FNR == 1'
(imprimir apenas a primeira linha, mas, novamente, ler tudo) etc.
Eu usaria:
awk 'FNR <= 1' file_*.txt
Como @Kusalananda aponta, há muitas maneiras de capturar a primeira linha na linha de comando, mas usar o head -n 1
pode não ser a melhor opção ao usar curingas, já que imprimirá informações adicionais. Mudar 'FNR == i'
para 'FNR <= i'
permite obter as primeiras i linhas.
Por exemplo, se você tiver n arquivos chamados file_1.txt, ... file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
Mas com head
curingas imprima o nome do arquivo:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye
head -qn1 file_*.txt