EDIT (para esclarecer pergunta):
Os comandos devem ser executados em duas linhas separadas. Acredito que também haja uma parte incorreta disso. Eu acredito que o símbolo @
antes do max não é necessário. O segundo $
no comando grep também parece desnecessário. Finalmente, no seu exemplo, as aspas simples ao redor do comando cut devem ser marcas de seleção ('da tecla ~ em oposição a'). O comando completo provavelmente deve ser (em linhas separadas):
max='cut -f4 -d: intrulog | sort -n -r | head -1'
grep "$max" logfile | cut -f1,3,4 -d: | sort | uniq
Se você quiser executá-lo como uma única linha, adicione um ponto-e-vírgula entre eles.
RESPOSTA ORIGINAL:
max
está sendo atribuído ao valor cut -f4 -d: intrulog | sort -n -r | head -1
, que faz o seguinte na ordem:
-
cut
é chamado para processar o arquivointrulog
, escolhendo a quarta coluna em um conjunto delimitado por dois pontos (:
) -
sort
é chamado para classificar a saída decut
para colocar os números mais altos no topo -
head
é chamado para reduzir a saída apenas para a linha superior.
Considerados todos juntos, ele basicamente obtém o maior valor na quarta coluna do arquivo chamado intrulog
e retorna esse valor como o valor max
, que grep
procura em logfile
.
A partir de que grep
é encontrado, cut
é chamado novamente para retornar as primeira, terceira e quarta colunas, que são classificadas por sort
em ordem alfabética e aparadas por uniq
para mostrar apenas resultados exclusivos. / p>