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:
-
grep -c ^b example
: produza a contagem de linhas correspondentes para linhas que começam com a letrab
e -
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çacat
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!