Je suppose que le <br>
dans votre question à la fin de la date
colonne est quelque chose de indésirable. Dans tous les cas, il peut être retiré facilement s'il est présent. Cependant, en venant à la partie principale, vous pouvez réaliser ce que vous essayez de faire en utilisant,
sort -k 2n filename.txt
Maintenant, la commande ci-dessus donnerait la sortie d'une manière triée. Maintenant, la commande ci-dessous devrait donner ce que vous recherchez.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Explication
La commande sort trie essentiellement le fichier en fonction de la deuxième colonne qui est la date. J'ai donc modifié votre fichier d'entrée pour tester la commande si elle fonctionne puisque le fichier d'entrée a toutes les données triées par défaut. Après cela, la awk
commande imprime toutes les lignes jusqu'à ce que nous rencontrions une correspondance particulière.
Essai
cat filename.txt
647919 2014/01/01
647946 2012/11/30
647955 2011/01/04
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
Maintenant, la sort -k 2n filename.txt
sortie est,
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Nous sommes maintenant convaincus que le fichier est trié sur la deuxième colonne. Maintenant, pour sélectionner des valeurs JUSQU'À une date particulière,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Dans l'exemple ci-dessus, j'obtiens toutes les valeurs jusqu'à 2013/12/03
. La sortie est,
647955 2011/01/04
647946 2012/11/30
Non, <br>
ça fait partie de mon dossier
Si tel est le cas, nous pouvons modifier légèrement la commande comme ci-dessous.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Je supprime donc toutes les <br>
balises de la deuxième colonne, puis je passe la commande mentionnée ci-dessus.
Références
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538