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 11:14:49

Slyfox
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-8-amd64 x86_64
(G)UI : Mate 1.20.3
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 09:19:43)

Hors ligne

#2 13-04-2020 14: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 14:36:59)

Hors ligne

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

phlinux
Membre
Distrib. : Jessie
Noyau : 4.9
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-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 14:41:21

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-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 14:44:26)

Hors ligne

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

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-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 15:45:33

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-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 16:05:58

Slyfox
Membre
Distrib. : Debian 10 Buster
Noyau : Linux 4.19.0-8-amd64 x86_64
(G)UI : Mate 1.20.3
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 09:19:19)

Hors ligne

Pied de page des forums