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 decutpara 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>