Avec awk si l'on utilise un séparateur " ", il fait ce qu'on lui demande et n'ajoute pas de retour à la ligne (sauf par défaut en fin de ligne).
awk -F: '$3~/5/{print $1" "$3}' /etc/passwd
sync 5
smmsp 51
nfsnobody 65534
smolt 495
pma 500
robot 501
named 25
mon-xp$ 504
Pour ton problème, ce n'est pas
awk qui est en cause mais ton «
for LINE in» qui ne fait pas de différence entre un argument séparé
par un espace ou un argument séparé par
une nouvelle ligne
Ce n'est donc pas awk qui est en cause mais le SHELL.
Essaie avec
for LINE in $(awk -F: '{print($1" "$3)}' /etc/passwd)
do
echo $LINE
done
sync
5
smmsp
51
nfsnobody
65534
smolt
495
pma
500
robot
501
named
25
mon-xp$
504
à comparer avec l'exemple précédent.
résultat (tous les arguments sont traités les uns à la suite des autres et la commande echo les traite un par un).
awk -F: '$3~/5/{print $1" "$3}' /etc/passwd | \
while read LINE
do
echo $LINE
done
devrait être plus conforme à tes désirs.