GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trier avec un délimiteur de plusieurs caractères ?

ENTRÉE :

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

SORTIE :

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

Question :Comment puis-je trier, si j'ai un délimiteur long de plusieurs caractères ? ("FOO") ?

Dans l'exemple a.txt est trié par deuxième colonne.

La question est en général, les nombres dans a.txt pourrait être n'importe quoi.

Réponse acceptée :

Utilisez par ex. sed pour remplacer la chaîne par un délimiteur à un caractère, trier par colonne, puis remplacer à nouveau le délimiteur :

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

Cela suppose qu'il existe un caractère dont vous savez qu'il n'apparaît pas dans l'entrée. Un caractère de contrôle serait un candidat courant, mais vous devez faire un choix en fonction de votre connaissance du format d'entrée.


Linux
  1. Comment trouver des fichiers volumineux Linux avec les commandes find et du

  2. Comment définir le délimiteur 'tab' avec 'cut' dans Bash?

  3. Comment supprimer le caractère \r avec sed

  4. Comment construire un module de noyau Linux pour qu'il soit compatible avec toutes les versions du noyau ?

  5. Comment renommer en masse des fichiers avec un encodage invalide ou remplacer en masse des caractères encodés invalides ?

Comment utiliser Linux Cat Command (avec exemples)

Comment utiliser les commandes 'cat' et 'tac' avec des exemples sous Linux

Comment travailler avec des liens durs et des liens souples sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Comment grep avec la sortie couleur

Comment passer plusieurs arguments à exécuter avec le script .sh