Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-04-2020 12:14:49

Slyfox
Membre
Distrib. : Debian Sid
Noyau : Linux 5.10.0-6-amd64
(G)UI : Mate 1.24.1
Inscription : 15-12-2013

[Résolu] Awk variable avec parenthèses

Bonjour les ami(e)s smile

Petit problème avec awk.

Voici un exemple qui fonctionne:

file="/home/user/fichier 1.txt"

awk -v var="$file" '{
  if ($0 ~ var) {printf "%s\n" ,var}
  else {printf "Echec\n"}
  }'
<<< "$file"
 




Et voici le même sauf qu'il ne fonctionne pas (il devrait me retourner /home/user/fichier (1).txt) :

file="/home/user/fichier (1).txt"

awk -v var="$file" '{
  if ($0 ~ var) {printf "%s\n" ,var}
  else {printf "Echec\n"}
  }'
<<< "$file"
 



D'après ce que j'ai compris le problème vient de cette partie du code ($0 ~ var) et des parenthèses contenu dans var.

Merci du coup de pouce.

Slyfox

Dernière modification par Slyfox (14-04-2020 10:19:43)

Hors ligne

#2 13-04-2020 15:03:11

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : [Résolu] Awk variable avec parenthèses

Je ne m'y connais pas particulièrement en awk mais si j'ai bien compris.
- $0 c'est la ligne;
- ~ c'est pour comparer avec une regex
- var est donc l'expression regex à comparer sauf qu'elle n'est pas entourée comme /regex/

Edit :
Je laisse la partir utile du message mais j'ai mal analysé le problème.

Dernière modification par naguam (13-04-2020 15:36:59)

Hors ligne

#3 13-04-2020 15:17:55

phlinux
Membre
Distrib. : Buster
Noyau : 4.19
(G)UI : Openbox (+Rox+Feh)
Inscription : 10-05-2009

Re : [Résolu] Awk variable avec parenthèses

Bjr,

Peut être ce genre de truc

#!/bin/bash

file="/home/user/fichier (1).txt"

awk -v var="$file" '{{gsub (/[()]/,_)}
  if ($0 ~ var) {printf "%s\n" ,var}
  else {printf "Echec\n"}
  }'
<<< "$file"


Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#4 13-04-2020 15:41:21

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 12-08-2015

Re : [Résolu] Awk variable avec parenthèses

Effectivement, var est considéré comme une regex.

Ta variable var doit être définie comme ceci :

var='/home/user/fichier \\(1\\)\.txt'

Dernière modification par Beta-Pictoris (13-04-2020 15:44:26)

Hors ligne

#5 13-04-2020 16:43:43

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 12-08-2015

Re : [Résolu] Awk variable avec parenthèses

Comme ceci :

1 #!/usr/bin/bash
  2
  3 file="/home/jc/fichier (1).txt"
  4
  5 awk -v var="$file" '{ gsub("[()]","\\\\&",var);
  6   if ($0 ~ var) {printf "%s\n" ,var}
  7   else {printf "Echec\n"}
  8   }'
<<< "$file"
 


smile

Hors ligne

#6 13-04-2020 16:45:33

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 12-08-2015

Re : [Résolu] Awk variable avec parenthèses

phlinux a écrit :

Bjr,

Peut être ce genre de truc

#!/bin/bash

file="/home/user/fichier (1).txt"

awk -v var="$file" '{{gsub (/[()]/,_)}
  if ($0 ~ var) {printf "%s\n" ,var}
  else {printf "Echec\n"}
  }'
<<< "$file"


Effectivement, ça marche aussi. smile

Hors ligne

#7 13-04-2020 17:05:58

Slyfox
Membre
Distrib. : Debian Sid
Noyau : Linux 5.10.0-6-amd64
(G)UI : Mate 1.24.1
Inscription : 15-12-2013

Re : [Résolu] Awk variable avec parenthèses

Merci à tous pour votre aide et votre précieux temps ! cool

Dernière modification par Slyfox (14-04-2020 10:19:19)

Hors ligne

Pied de page des forums