Por que as opções de classificação -c (verifique se classificadas) e -o (gravação no arquivo de saída) não são compativeis

1

Estou classificando um grande número de arquivos um após o outro. Usando sort -o file file . O loop for interrompido no meio do caminho e antes de reiniciar Eu quero usar a opção -c do sort para acelerar a ordenação. Mas diz que as opções -co não são compatíveis. Por que é tão?

sort --version
sort (GNU coreutils) 8.13

OS: Ubuntu 12.10
    
por user13107 06.10.2013 / 05:25

4 respostas

3

Porque você está dizendo que deseja apenas --check que não gera saída e você também especifica que você deseja que o --pedput classificado vá para um determinado arquivo. Estes são conceitos mutuamente exclusivos, e são aplicados em sort.c (gnu coreutils 8.20) com

  if (checkonly)
    {
      …

      if (outfile)
        {
          static char opts[] = {0, 'o', 0};
          opts[0] = checkonly;
          incompatible_options (opts);
        }
    
por 06.10.2013 / 05:49
2

Supondo que você esteja usando o GNU sort , as opções mencionadas são:

   -c, --check, --check=diagnose-first
          check for sorted input; do not sort
   -o, --output=FILE
          write result to FILE instead of standard output

A sinalização -c informará você se a entrada já está ou não ordenada:

$ echo -e "A\nB\nC" | sort -c
$ echo -e "A\nC\nB" | sort -c
sort: -:3: disorder: B

Portanto, se a entrada estiver classificada, nada será impresso e, se o inpnut não estiver classificado, uma mensagem de erro será impressa no erro padrão. Em outras palavras, sort -c nunca imprime na saída padrão. Como nunca imprime, não faz muito sentido redirecionar sua saída.

    
por 06.10.2013 / 05:49
2

sort -c nunca produz saída. Apenas verifica o arquivo. Sem saída, não há motivo para gravá-lo em um arquivo. Então, incompatível com -o.

Você poderia usar -c como um tipo de verificação em um arquivo antes de classificá-lo, mas não tenho certeza se isso realmente aceleraria as coisas como você deseja.

    
por 06.10.2013 / 07:11
0

Há uma grande diferença em verificar se um arquivo está classificado e classificá-lo.

Ao verificar, no melhor dos casos, duas entradas são suficientes (bem rápido), na primeira entrada que não está classificada, o comando pode sair e a verificação é feita, mas neste momento a saída ficaria incompleta, a pior case é quando o arquivo é classificado (somente nesse caso a saída teria sentido).

Se você tiver muitos arquivos para classificar e acontecer com frequência para interromper, provavelmente você deve acompanhar de alguma forma os arquivos concluídos antes de classificá-los novamente.

    
por 06.10.2013 / 09:10

Tags