2017-04-04 1 views
1

Je suis sur un serveur linux utilisant bash. J'ai des données qui ressemble àTrier par emplacement des octets

20130101 Z27 
20170101 F40 
20170501UZ24 
20160701BA27 
20120411 A27 
20170101 Z30 

Je suis intéressé uniquement au tri par octet = 8-11 emplacement. Existe-t-il un moyen pour GNU sort de trier par cette plage d'octets?

Je cherche une option similaire à ce que cut a avec -b où je peux spécifier une gamme d'octets.

Je peux écrire un script Python pour ce faire, mais je préfère garder tout sur un simple script bash que les autres lisent et suivent.

Répondre

3

Vous pouvez faire quelque chose comme ceci:

$ sort -t $'\n' -k 1.8,1.11 infile 
20120411 A27 
20160701BA27 
20170101 F40 
20170501UZ24 
20130101 Z27 
20170101 Z30 

-t $'\n' dit sort que le séparateur de champ est le retour à la ligne, à savoir, chaque ligne se compose d'un seul champ.

-k 1.8,1.11 dit d'utiliser les caractères 8 à 11 dans le champ 1 pour trier par.

+0

Merci! C'est une excellente solution. – Jon

+0

bon. Merci! – Peddipaga