Supongo que <br>
en su pregunta al final de la date
columna es algo no deseado. En cualquier caso, se puede quitar fácilmente si está presente. Sin embargo, al llegar a la parte principal, puede lograr lo que está tratando de hacer usando,
sort -k 2n filename.txt
Ahora, el comando anterior daría la salida de manera ordenada. Ahora, el siguiente comando debería dar lo que busca.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Explicación
El comando de clasificación básicamente ordena el archivo en función de la segunda columna, que es la fecha. Así que modifiqué su archivo de entrada para probar el comando si funciona, ya que el archivo de entrada tiene todos los datos ordenados por defecto. Después de eso, el awk
comando imprime todas las líneas hasta que encontremos una coincidencia particular.
Pruebas
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
Ahora, la sort -k 2n filename.txt
salida es,
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Ahora estamos satisfechos de que el archivo está ordenado en la segunda columna. Ahora, para seleccionar valores HASTA una fecha particular,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
En el ejemplo anterior, obtengo todos los valores hasta 2013/12/03
. La salida es,
647955 2011/01/04
647946 2012/11/30
No, <br>
es parte de mi archivo
Si este es el caso, podemos ajustar el comando ligeramente como se muestra a continuación.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Así que solo estoy eliminando todas las <br>
etiquetas de la segunda columna y luego canalizando el comando mencionado anteriormente.
Referencias
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538