Isso funciona:
cat /etc/passwd | awk -F':' '{print $1, $2, $3, $4, $5, $6, $7}'
...
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
...
Isso não funciona:
cat /etc/passwd | awk -F':' '{print $0}'
...
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
Obrigado pela ajuda :)
$0
representa a linha inteira, incluindo separadores de campos de entrada.Você pode fazer com que ele seja dividido e reunido usando o separador de campo de saída simplesmente definindo um campo:
(Mudei para ler diretamente do arquivo, em vez de torturar um
cat
;-)Isso está documentado na seção Alterando o conteúdo de um campo do manual:
O campo $0 é apenas a linha, sem nenhuma análise feita. Você precisará percorrer cada campo, fazendo uso da variável NF (número de campos, determinado pelo seu FS):
cat /etc/passwd | awk -F':' '{for (i=1;i<=NF;i++) {printf "%s ",$i}; printf "\n"};'