Estou tentando aprender melhor a linha de comando e me perguntando qual seria a diferença entre esses dois comandos.

grep -c ^b example 

e

grep ^b example| cat –n 

Comentários

  • Bem-vindo a Unix e Linux . Se você quiser aprender a linha de comando, a melhor maneira é experimentar executando os comandos você mesmo usando diferentes arquivos de entrada. As perguntas devem mostrar algum esforço de pesquisa, então eu ' d aconselha verificar as páginas de manual relevantes para descobrir o propósito das diferentes opções. As páginas de manual não são ' as mais legíveis se você ' é novo no Unix, então se você tiver problemas para entendê-lo, pode editar esta questão para torná-la mais específico (e útil). Consulte Como perguntar e sinta-se à vontade para fazer o tour .
  • (-1) Nem mesmo os mesmos comandos. Dois comandos não relacionados.
  • Você tentou executar os comandos?

Resposta

Bem , de acordo com o manual , grep:

pesquisa PADRÃO em cada ARQUIVO . Por padrão, grep imprime as linhas correspondentes.

e com o -c sinalizador:

-c, --count 

Suprime a saída normal; em vez disso, imprime uma contagem de linhas correspondentes para cada arquivo de entrada.

Portanto, grep -c ^b example imprime o número (contagem) de linhas que correspondem ao padrão, enquanto grep ^b example imprime as próprias linhas.

Quanto a cat, é descrito para

concatenar arquivos e imprimir no saída padrão

e o que o sinalizador -n faz é:

-n, --number 

Numere todas as linhas de saída

Dado o tubo e não nomes de arquivo, cat lê a partir do canal, então a saída é a saída de grep, com números de linha adicionados. Portanto, grep ^b example| cat –n imprime todas as linhas correspondentes, numeradas.


Isso é diferente de grep -n ^b example, onde grep adiciona o li m números das partidas. grep conhece os números das linhas do arquivo original, enquanto cat vê apenas a saída de grep e numera as linhas de acordo.

Então, dado o arquivo de entrada

$ cat example bar foo basf 

Temos:

$ grep -c ^b example 2 $ grep ^b example |cat -n 1 bar 2 basf $ grep -n ^b example 1:bar 3:basf 

Resposta

Comando Ok:

  1. grep -c ^b example: produza a contagem de linhas correspondentes para linhas que começam com a letra b e

  2. grep ^b example | cat -n: passe o resultado do comando grep para o comando cat e liste-os com os números das linhas. O -n força cat a listá-los junto com os números das linhas.

Exemplo :

example.txt com conteúdo:

media sound3 media sound1 media sound2 find sound -type f -name sound[0-9] -printf "media %f\n" > file.txt find sound -type f -name sound[0-9] -exec bash -c "echo media bash >> file.txt" {} \; find sound -type f -name sound[0-9] -exec bash -c "f="{}"; echo media $( basename ${f}) >> file.txt" \; 

Resultado de (1):

3 

Resultado de (2):

1 media sound3 2 media sound1 3 media sound2 

Comentários

  • Sim seu direito!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *