filtra a data de uma coluna particular (da última terceira coluna) de um arquivo csv. Além disso, se a última terceira coluna estiver vazia, as linhas de impressão

0

O arquivo csv de entrada é

23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/21/2017 17:00,iii,89
23,54,one,tree,56,23,7/30/2017 17:00,iii,89

É necessário um comando shell para obter a data atual no formato 7/20/2017 e, em seguida, filtrar usando a mesma data em um arquivo csv da última terceira coluna (a coluna não deve ser detectada primeiro ou a partir de vírgula varia e, portanto, deve ser do último dia 3)

    
por user8554534 24.10.2017 / 20:58

2 respostas

1
awk -F, -v "today=$(date "+%m/%d/%Y" | sed 's/^0//')" '$(NF-2) ~ "^"today' file

Não satisfeito com o uso do sed, leia mais atentamente a página de manual de datas:

awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) ~ "^"today' file
# .........................^^^

Se a última última coluna estiver vazia ou se for "hoje"

awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) == "" || $(NF-2) ~ "^"today' file
    
por 24.10.2017 / 21:25
1

Com o único processo awk do GNU:

awk -F',' 'BEGIN{ d=strftime("%-m/%d/%Y", systime()) }
          $(NF-2)~/^[[:space:]]*$/{ print > "empty_dates.txt" }$(NF-2)~d' file
  • $(NF-2)~/^[[:space:]]*$/{ print > "empty_dates.txt" } - se o 3º campo (no final) estiver vazio - imprima a linha no arquivo empty_dates.txt (você pode especificar o nome do arquivo que você gosta)
por 24.10.2017 / 22:53