GNU/Linux >> Linux Esercitazione >  >> Linux

Come ordinare con un delimitatore lungo più caratteri?

INGRESSO:

$ cat a.txt 
1FOO2FOO3
4FOO5FOO5
2FOO1FOO9
$ 

USCITA:

$ cat a.txt | sort SOMEMAGIC
2FOO1FOO9
1FOO2FOO3
4FOO5FOO5
$ 

Domanda :Come posso ordinare, se ho un delimitatore lungo di più caratteri? ("FOO")?

Nell'esempio a.txt è ordinato per seconda colonna.

La domanda è in generale, numeri in a.txt potrebbe essere qualsiasi cosa.

Risposta accettata:

Utilizzare ad es. sed per sostituire la stringa con un delimitatore di un carattere, ordina per colonna, quindi sostituisci nuovamente il delimitatore:

sed -e s/FOO/X/g a.txt | sort -k 2,2 -t X | sed -e s/X/FOO/g 

Ciò presuppone che ci sia un carattere che sai non appare nell'input. Un personaggio di controllo sarebbe un candidato comune, ma devi fare una scelta in base alla tua conoscenza del formato di input.


Linux
  1. Come definire il delimitatore "scheda" con "taglio" in Bash?

  2. Come generare file e ignorare le righe che iniziano con "?"?

  3. Come costruire un modulo del kernel Linux in modo che sia compatibile con tutte le versioni del kernel?

  4. Come rinominare in blocco i file con codifica non valida o sostituire in blocco i caratteri codificati non validi?

  5. Come aggiungere un messaggio che verrà letto con dmesg?

Come utilizzare Linux Cat Command (con esempi)

Come utilizzare i comandi "cat" e "tac" con esempi in Linux

Come comprimere file e directory su Linux (con esempi)

Come lavorare con hardlink e softlink in Linux

Come sostituire in modo ricorsivo i caratteri con sed?

Come passare più argomenti da eseguire con lo script .sh