Presumo que a <br>
sua pergunta no final da date
coluna seja algo indesejável. Em qualquer caso, pode ser removido facilmente se estiver presente. No entanto, chegando à parte principal, você pode conseguir o que está tentando fazer usando,
sort -k 2n filename.txt
Agora, o comando acima daria a saída de maneira ordenada. Agora, o comando abaixo deve fornecer o que você procura.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Explicação
O comando de classificação basicamente classifica o arquivo com base na segunda coluna, que é a data. Então, modifiquei seu arquivo de entrada para testar o comando se ele funciona, pois o arquivo de entrada tem todos os dados classificados por padrão. Depois disso, o awk
comando imprime todas as linhas até encontrarmos uma correspondência específica.
Teste
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
Agora, a sort -k 2n filename.txt
saída é,
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Agora, estamos satisfeitos que o arquivo esteja classificado na segunda coluna. Agora, para selecionar valores UPTO uma data específica,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
No exemplo acima, eu recebo todos os valores 2013/12/03
. A saída é,
647955 2011/01/04
647946 2012/11/30
Não, isso <br>
faz parte do meu arquivo
Se for esse o caso, podemos ajustar um pouco o comando, como abaixo.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Estou apenas removendo todas as <br>
tags da segunda coluna e canalizando o comando acima mencionado.
Referências
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538