Como obter a primeira linha de saída da linha de comando?

3

Estou executando um comando de localização que está retornando vários resultados, mas só preciso do primeiro resultado. Um pouco de googling me levou ao comando "read", mas não consegui descobrir, e a man page não foi muito útil.

    
por asdfasdfasdfasdfasdfasdfasdf 08.08.2014 / 22:16

4 respostas

9

digite seu comando (exemplo: ls -l) então o comando head com um pipe da seguinte forma:

ls -l | cabeça -1

    
por 08.08.2014 / 22:25
0

Você pode usar o comando more para controlar a quantidade de texto exibida por vez.

Para resolver seu problema:

Redirecione sua saída para um arquivo criado por você.

Use For Loop com 1 ciclo (contador = 1, -1 de cada vez). Você precisa usar tokens para a função de pesquisa.

O loop For ECHO o primeiro comando.

Exclua seu arquivo.

Armazene o eco do FOR Loop em uma variável (opcional).

Eu posso dar algumas definições de uso se você precisar.

    
por 08.08.2014 / 22:28
0

Como usar read

$ echo -e "1\n2\n3\n4\n5"
1
2
3
4
5

$ echo -e "1\n2\n3\n4\n5" | while read n; do  echo "n:$n" ; done
n:1
n:2
n:3
n:4
n:5

$ 


Mais informações sobre como o bash funciona está disponível em www.tldp.org em Advanced Bash-Scripting Guide ,
Há mais um guia sobre o bash Bash Guide for Beginners .

    
por 08.08.2014 / 22:38
0

Eu gosto de muitas maneiras de resolver problemas unix. Aqui estão alguns outros, assumindo que command é substituído por qualquer coisa que você esteja fazendo:

command | awk 'NR == 1 {print}'

command | sed -e 1q

TMP='mktemp tempXXX'; command > ${TMP} ; ed ${TMP} << HERE
1p
HERE

command | split -1 - ; cat xaa ; rm -f x[a-z][a-z]

LINECOUNT=$(command | tee tempfile | wc -l | sed -e 's/ *//g'); \
  tail -$((${LINECOUNT} - 1)) tempfile | diff -u - tempfile | grep '^+' | \
  grep -v '^+++' | sed -e 's/^+//'

Se a sua saída for registros de comprimento fixo (o que pode ser verdade; por exemplo, 80 caracteres de entrada mais uma nova linha de terminal):

command | dd ibs=81 count=1

Em um ponto, trabalhei na instalação de sistemas Unix a partir de dispositivos de armazenamento com capacidade restrita (disquetes). Muitas vezes precisávamos encontrar maneiras imaginativas de usar o conjunto limitado de comandos que poderíamos incluir em um disquete de 1,44 MB:)

    
por 09.08.2014 / 16:59