Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/07/2012, à 16:47

ar barzh paour

[Résolu] traitement espace et awk

bonjour à tous
j'ai un petit script awk qui me pose problème

BEGIN {
FS="|"
}
END {
for  (i=1 ; i <= NF ; i++) {
print i
nom=$i
print nom
system("ls -ails " nom)
}
}

le problème est sur la ligne
system("ls -ails " nom)
quand nom qui est un fichier contient une espace

par exemple quand on arrive sur cette valeur "/home/xxx/zenity/form ulaire"
le résultat donne

2
/home/xxx/zenity/form ulaire
ls: impossible d'accéder à /home/xxx/zenity/form: Aucun fichier ou dossier de ce type
ls: impossible d'accéder à ulaire: Aucun fichier ou dossier de ce type

dans un terminal je peux traiter comme ça

ls -ails "form ulaire"
789181 4 -rwxrwxrwx 1 xxx yyy 738 juil.  8 16:45 form ulaire

mais si dans mon script awk je mets

system("ls -ails " "nom")

j'ai comme résultat

1
/home/xxx/zenity/form ulaire
ls: impossible d'accéder à nom: Aucun fichier ou dossier de ce type

Dernière modification par ar barzh paour (Le 08/07/2012, à 19:42)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#2 Le 08/07/2012, à 16:55

Bousky

Re : [Résolu] traitement espace et awk

Le shell accepte aussi les guillemets simples. Il y a des différences de traitements, mais elles n'interviennent pas ici :

ls -ails 'form ulaire'

Ce qui donne :

system("ls -ails '" nom "'")

Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#3 Le 08/07/2012, à 17:01

ar barzh paour

Re : [Résolu] traitement espace et awk

merci Bousky pour la réponse
j'avaisi essayé plusiurs combinaison dont ( '       $nom    "nom" ) sans succès
en mettant dans le script awk le guillemet simple j'ai une erreur

system("ls -ails " '" nom "')
awk: 11: unexpected character '''

une autre idée ?


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#4 Le 08/07/2012, à 17:19

Bousky

Re : [Résolu] traitement espace et awk

Pourquoi tu ne l'as pas tapé exactement comme je l'ai indiqué ? Les guillemets simples doivent êtres passés au shell et donc se trouver dans une chaine reconnue par awk qui est elle délimitée par des guillemets doubles.

Dernière modification par Bousky (Le 08/07/2012, à 17:26)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#5 Le 08/07/2012, à 19:41

ar barzh paour

Re : [Résolu] traitement espace et awk

Dam.... j'ai mal lue ta commande , yeux trop fatigués ,j'aurais du faire un copier/coller

xxx@yyy-desktop:~/zenity$ sh selection
1
/home/xxx/zenity/form ulaire
789181 4 -rwxrwxrwx 1 xxx yyy 738 juil.  8 16:45 /home/xxx/zenity/form ulaire

OK marche impeccable
merci

Dernière modification par ar barzh paour (Le 08/07/2012, à 19:41)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne