AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1123499
Accepted
deepblue_86
deepblue_86
Asked: 2019-03-07 06:14:44 +0800 CST2019-03-07 06:14:44 +0800 CST 2019-03-07 06:14:44 +0800 CST

usando o comando sort enquanto as strings na primeira coluna se repetem

  • 772

Eu tenho um arquivo de dados da seguinte forma;

ALIC 5.55 2.65 3.45
ALIC 2.56 2.78 3.99 
AMC4 3.55 3.66 4.88
AMC4 3.00 3.67 4.78
ALIC 1.00 1.00 1.00
ALIC 0.95 1.00 1.00
AMC4 0.50 1.00 1.00
AMC4 0.01 1.00 1.00

Eu preciso classificar essas linhas com strings na primeira coluna da seguinte maneira;

ALIC 5.55 2.65 3.45
ALIC 2.56 2.78 3.99 
ALIC 1.00 1.00 1.00
ALIC 0.95 1.00 1.00
AMC4 3.55 3.66 4.88
AMC4 3.00 3.67 4.78
AMC4 0.50 1.00 1.00
AMC4 0.01 1.00 1.00

Mas quando executo sort -k 1 data, vejo que os valores numéricos na segunda coluna são classificados em ordem crescente. Qual comando produz a classificação acima?

sort
  • 2 2 respostas
  • 432 Views

2 respostas

  • Voted
  1. Best Answer
    steeldriver
    2019-03-07T06:19:55+08:002019-03-07T06:19:55+08:00

    Há duas coisas que você precisa fazer.

    Primeiro, sort -k 1 começa na chave 1, mas por padrão para no final da linha: para classificar apenas na chave 1, você precisa-k 1,1

    Em segundo lugar, por padrão, o GNU sortexecuta uma classificação final de "último recurso" em toda a linha - para suprimir isso, você precisa adicionar a --stableopção.

    Então

    $ sort --stable -k 1,1 data
    ALIC 5.55 2.65 3.45
    ALIC 2.56 2.78 3.99
    ALIC 1.00 1.00 1.00
    ALIC 0.95 1.00 1.00
    AMC4 3.55 3.66 4.88
    AMC4 3.00 3.67 4.78
    AMC4 0.50 1.00 1.00
    AMC4 0.01 1.00 1.00
    
    • 2
  2. PerlDuck
    2019-03-07T06:27:46+08:002019-03-07T06:27:46+08:00

    Isso classificará pela primeira coluna em ordem crescente (como de costume) e, em seguida, pela segunda coluna em ordem decrescente (inversa). A segunda coluna é interpretada como um número:

    $ sort -k 1,1 -k 2nr,2 < in.txt
    ALIC 5.55 2.65 3.45
    ALIC 2.56 2.78 3.99
    ALIC 1.00 1.00 1.00
    ALIC 0.95 1.00 1.00
    AMC4 3.55 3.66 4.88
    AMC4 3.00 3.67 4.78
    AMC4 0.50 1.00 1.00
    AMC4 0.01 1.00 1.00
    

    Você pode querer adicionar o --debugsinalizador para ver exatamente em quais teclas sortoperam:

    $ sort --debug -k 1,1 -k 2nr,2 < in.txt
    ALIC 5.55 2.65 3.45
    ____
         ____
    ___________________
    ALIC 2.56 2.78 3.99
    ____
         ____
    ___________________
    ALIC 1.00 1.00 1.00
    ____
         ____
    ___________________
    ...
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve