Presumo che <br>
nella tua domanda alla fine della date
colonna sia qualcosa di indesiderato. In ogni caso, può essere rimosso facilmente se è presente. Tuttavia, arrivando alla parte principale puoi ottenere ciò che stai cercando di fare usando,
sort -k 2n filename.txt
Ora, il comando sopra darebbe l'output in modo ordinato. Ora, il comando seguente dovrebbe dare quello che cerchi.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Spiegazione
Il comando sort ordina sostanzialmente il file in base alla seconda colonna che è la data. Quindi ho modificato il tuo file di input per testare il comando se funziona poiché il file di input ha tutti i dati ordinati per impostazione predefinita. Dopodiché, il awk
comando stampa tutte le linee fino a quando incontriamo una corrispondenza particolare.
analisi
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
Ora, l' sort -k 2n filename.txt
output è,
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Ora siamo soddisfatti del fatto che il file sia ordinato nella seconda colonna. Ora, per selezionare i valori FINO A una data particolare,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Nell'esempio sopra, ottengo tutti i valori fino a 2013/12/03
. L'output è,
647955 2011/01/04
647946 2012/11/30
No, <br>
fa parte del mio file
In questo caso, possiamo modificare leggermente il comando come di seguito.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Quindi sto solo rimuovendo tutti i <br>
tag dalla seconda colonna e quindi eseguendo il piping del comando sopra menzionato.
Riferimenti
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538