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 stringinstall
presente 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.