O erro é porque você está usando '''
para citar seu comando. Como você também está usando o único '
para citar seus comandos awk
e sed
, o shell acha que o comando acabou e fica confuso. Tanto quanto eu sei, não existe tal coisa como '''
; os dois primeiros '
são ignorados, pois eles simplesmente definem uma string vazia e a última é tomada como uma cotação de abertura que é fechada pela cotação de abertura de seu awk
. Você pode ver isso se observar como seu código é destacado em sua pergunta.
A solução mais simples é usar aspas simples para incluir o comando e aspas duplas para sed
e awk
. No entanto, você precisará escapar do $1
no script awk
para que ele não seja interpretado como uma variável do shell. Você também está complicando as coisas sem motivo. Tudo o que você realmente precisa é:
ssh localhost 'cut -d: -f1 /etc/passwd |
while read i; do last -n 1 $i | sed -e "/^$/{N;d;}"; done'