O comando awk oneliner abaixo exibe todos os pacotes instalados hoje ou ontem,
awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
Explicação:
-
-v- > Os valores atribuídos às variáveis awk são feitos através do parâmetro-v. A sintaxe seria,-v variable=value. Esta variável é usada pelo awk para outras finalidades. -
foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d')-
date '+%Y-%m-%d', imprime a data atual. A saída deste comando é atribuída à variávelfoo. -
date -d "yesterday" '+%Y-%m-%d', imprime a data do dia anterior. Novamente, a saída é armazenada como valor para a variávelvar.
-
-
'($1==foo || $1==bar) && $3~/^install$/ { print $4 }'-
||- > operador OR lógico,&&- > operador AND lógico. -
($1==foo || $1==bar) && $3~/^install$/- > Verifica se o valor no número de coluna 1 corresponde ao valor da variávelfoo( que contém a data atual ) OU o número da coluna 1 corresponde ao valor debar( que contém a data de ontem ) AND deve haver uma stringinstallpresente na coluna número 3. Se estas condições forem satisfeitas, o awk imprime o valor da coluna 4 (< em> nome do pacote ).
-
-
/var/log/dpkg.log- > Arquivo de entrada.