Como executar dois comandos grep no mesmo arquivo? [duplicado]

1

Eu tenho um arquivo. Quero selecionar as linhas que não começam com www. e não contém barras. Eu quero mostrar o resultado em result.txt

Para alcançar o primeiro requisito:

grep -v '^www\.' myfile.txt > result.txt .

Para alcançar o segundo, vou tomar resultado.txt e executar:

grep -v '/' result.txt > result2.txt

Existe um atalho melhor para executar vários comandos no arquivo e armazenar o resultado em um arquivo de saída: result.txt

Estou ciente de | para executar vários comandos em que a saída do comando à esquerda de | é entrada do comando à direita de | . O que eu não sei é, no caso do grep ou qualquer outro comando, devo usar o nome do arquivo no comando à direita de | . Em outras palavras, deveria ser:

grep -v '^www\.' myfile.txt | grep -v '/' > result.txt

OR

grep -v '^www\.' myfile.txt | grep -v '/' mfile.txt > result.txt
    
por user9371654 17.08.2018 / 11:08

2 respostas

2

grep -v -e '^www\.' -e '/' myfile.txt > result.txt

    
por 17.08.2018 / 11:13
2

Não tenha medo de usar canos. Alexander resposta é o melhor e purrest, mas no caso de eu procurar a melhor fórmula em primeiro lugar, eu uso alguns passos:

  1. head file |grep 'first-condition' |grep 'next-conditon' :: dá a você overwiev
  2. cat file |grep 'first-condition' |grep 'next-conditon' |wc -l :: dá valor
  3. grep --color 'complex-condition' :: destaca a seleção real

Na etapa final, você pode criar uma regexp muito complexa, por exemplo:

egrep -v '(^www\.)|(/)' myfile.txt > result.txt

Às vezes é necessário usar outros comandos de análise de string awk , sed , cut etc. Usar o pipe é muito útil.

    
por 17.08.2018 / 11:56