Por que o uniq pode ignorar os caracteres iniciais, mas não os caracteres finais? [fechadas]

6

A ferramenta de linha de comando especificada por POSIX uniq foi projetada para "relatar ou filtrar fora linhas repetidas em um arquivo ". Além dos casos de uso que envolvem as linhas completas para comparação, há duas opções para comparação de linha parcial:

  • -f <number> para ignorar os primeiros <number> campos e
  • -s <number> para ignorar os primeiros <number> caracteres (iniciando após quaisquer campos ignorados de -f ).

O que não entendo é por que o recurso nunca foi adicionado a uniq para permitir ignorar todos, exceto os primeiros % campos<number>.

Uma expressão comum do Awk é:

awk '!a[$1]++'

que imprime apenas as linhas que contêm a primeira ocorrência de seu primeiro campo.

Isso sempre me pareceu muito semelhante à função uniq .

É claro que é bom que as ferramentas se sobreponham, mas existe alguma razão histórica ou baseada na filosofia UNIX para não incluir a funcionalidade paralela em -f , de somente considerando os primeiros campos

por Wildcard 08.02.2017 / 04:27

1 resposta

4

Não sei sobre as razões históricas ou baseadas na filosofia UNIX (se houver), mas há alguns anos alguém enviou uma solicitação de recurso (e um patch) na lista de erros coreutils para adicionar essa capacidade a uniq . Foi finalmente rejeitado:

rev | uniq -f | rev foi considerado suficiente

    
por 08.02.2017 / 12:45