Muito simples pergunta H / W usando pipe e grep

1

Eu tenho dois arquivos de texto, F1a.txt e F1b.txt , com essencialmente os mesmos dados: o sobrenome do motorista e sua nacionalidade. Por exemplo:

Hamilton       GBR
Alonso         SPA

Eu concatenei esses dois arquivos em F1_drivers.txt . Como faço o seguinte?

  1. Usando pipes, exiba os drivers em F1a.txt e F1b.txt que são britânicos, classificados em ordem alfabética.

  2. Envie uma longa lista de arquivos no diretório atual, gravados em um arquivo chamado listing .

  3. Mude para um novo diretório e anexe a longa lista de arquivos nesse diretório a listing .

  4. Grep para a string GER em todos os arquivos que começam com F1 e terminam em .txt .

  5. Faça o # 4, mas canalize a saída para cat para criar um arquivo contendo a saída, denominado grepout.txt

Recebi informações básicas para ajudar, mas não sei para onde ir.

    
por Master B 29.09.2014 / 20:03

1 resposta

2

  1. cat F1a.txt F1b.txt | grep British | sort -d
    Usamos cat para ler o conteúdo dos arquivos em um sistema * nix.
    Em seguida, usamos um pipe, o caractere |, para alimentar a saída de cat em grep.
    Em seguida, usamos o comando grep para pesquisar a entrada de cat pela palavra britânica, e o grep filtra a saída para mostrar as linhas apropriadas.
    Em seguida, usamos outro pipe para alimentar a saída do grep em sort, que, como você provavelmente pode imaginar, classifica sua entrada. Usamos o argumento -d para classificá-lo em ordem alfabética.
  2. ls -al > listing
    Para fazer isso, precisamos usar o operador de redirecionamento de E / S do shell de '>'.
    Quando você o usa, seguido por um arquivo, o que o BASH faz é o seguinte: Leva o STDOUT ou saída padrão (linha de comando ou saída de ferramenta),
    e se um arquivo existir com esse caminho, ele o sobrescreverá com os novos dados do STDOUT, caso contrário, ele cria o arquivo e grava os dados do STDOUT nele.
    Tomamos ls, que nos fornece as informações do diretório de trabalho, e alimentamos o argumento -al, que essencialmente diz para ele exibir -allfiles no formato -longlisting.
    Em seguida, usamos o > operador de redirecionamento para colocar a saída de ls no arquivo, listando.
  3. cd a/directory/ e ls -al >> /path/to/listing
    cd alterna diretórios. O que quero dizer com cd / directory / é escolher um diretório aleatório e usá-lo com o comando, não literalmente cd para um diretório /, a menos que seja o que você realmente queira fazer.
    Em seguida, reutilizamos o comando ls anterior - lembre-se, -allfiles, -longformat - e usamos um comando de redirecionamento de shell diferente. Desta vez, usamos > & gt ;, que pega STDOUT e o acrescenta ao arquivo especificado depois, e o enviamos para a listagem de arquivos, onde quer que você os tenha criado.
  4. cat F1*.txt | grep GER
    Neste, estamos fazendo a mesma coisa que no número um - usando o cat para ler dados de seus arquivos e usando o grep para pesquisá-los. No entanto, estamos usando ainda outro novo operador shell, desta vez um asterisco, comumente referido como um curinga. O que o F1 * .txt diz ao shell para fazer é essencialmente isto:
    No diretório atual, como não especificamos outro - veja todos os arquivos. Se eles começarem com F1, tenham alguma coisa depois e terminem com .txt, então retornem esse nome de arquivo. Quando fazemos isso, o cat recebe vários arquivos e faz seu trabalho - ele concatena o conteúdo dos arquivos especificados no STDOUT.
    Em seguida, alimentamos todas as informações em STDOUT através do pipe em grep, como fizemos anteriormente, e informamos para procurar por GER.
  5. %código% O que podemos fazer, com isso, é dar ao gato a saída do grep como entrada, novamente, através de um pipe - e depois salvar a saída do gato, através do > operador como fizemos anteriormente - para acabar com toda a she-bang.
por 29.09.2014 / 20:23