logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

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

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

#1 02-03-2015 19:02:01

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Parser le fichier fstab (awk/bash)

Salut à tous ! smile

Je suis sur ce site : http://abs.traduc.org/abs-5.3-fr/ch03.html
Le mieux c'est que je colle le script qui m'interroge, je poserai ma question après.



#!/bin/bash
# Lit les lignes de /etc/fstab.

Fichier=/etc/fstab

{
read ligne1
read ligne2
} < $Fichier

echo "La première ligne dans $Fichier est :"
echo "$ligne1"
echo
echo "La deuxième ligne dans $Fichier est :"
echo "$ligne2"

exit 0

# Maintenant, comment analysez-vous les champs séparés de chaque ligne ?
# Astuce : utilisez awk, ou...
# ... Hans-Joerg Diers suggère d'utiliser la commande set de Bash.

 



Au lancement du script, la ligne2 affiche juste "#", pour éviter qu'il affiche des champs vides, il suggère dans les commentaires de la fin du script d'utiliser "awk". J'ai essayé de différentes manières, mais je n'y suis pas arrivé : quelqu'un peut m'aider ? roll

Dernière modification par Guizmo (02-03-2015 19:04:11)


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#2 02-03-2015 21:52:43

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Tu as essayé de faire :


cat /etc/fstab
 



Remarque, la seconde ligne d'un fstab est juste un # (dans debian en tous cas).

Et je ne comprends pas vraiment la question ; utiliser awk pour quoi faire ?
Explique ce que tu veux dire « éviter d'afficher des champs vides ». Qu'est-ce qu'un champ, dans
ce contexte ? Un ligne ?

Hors ligne

#3 02-03-2015 22:12:36

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Pour analyser les champs (séparés par un tabulation ou des espaces) dans le fichier fstab, awk
est une bonne solution.

Il y a 6 champs : <file system> <mount point>   <type>  <options>       <dump>  <pass>
On pourrait faire cela :


awk '$0 !~ /^#/ {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 }' </etc/fstab
 


pour les afficher tous les six.
Tu devrait pouvoir afficher les champs que tu veux, en adaptant un peu wink
Pour ce qui est d'utiliser la commande set de bash, pour faire la même chose, je
ne vois pas. help set devrait mettre sur la voie.

Dernière modification par enicar (02-03-2015 22:16:58)

Hors ligne

#4 02-03-2015 22:51:01

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Salut enicar... (je t'attds sur le poste ":source*vimrc*man*"...!? ) neutral
Là dans le script ci-dessus on parle de lignes qui commencent par "#"sans rien derrière dont on se fout qu'elles soient affichée.
Le but est donc d'avoir la ligne suivante...

Il y'a 6 champs dans quoi ?!

Il y a 6 champs : <file system> <mount point>   <type>  <options>       <dump>  <pass>



Est ce que ça répond à mon champs "#" vide de 2ème ligne ?
Si oui adapte ta réponse stp, pck je ne comprends rien ! roll

Dernière modification par Guizmo (02-03-2015 22:59:05)


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#5 03-03-2015 03:22:38

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Parser le fichier fstab (awk/bash)

Guizmo a écrit :

Il y'a 6 champs dans quoi ?!


Dans le fichier : /etc/fstab.

Voir : https://debian-facile.org/doc:systeme:fstab smile


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#6 03-03-2015 07:32:15

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : Parser le fichier fstab (awk/bash)

smolski a écrit :

Dans le fichier : /etc/fstab.

Qui est affiché, comme a dit enicar, par un simple

cat /etc/fstab


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#7 03-03-2015 11:17:05

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Salut à tous !

Merci smolski... Et paskal
En fait

awk '$0 !~ /^#/ {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 }' </etc/fstab



Affiche que les lignes non commentées, j'aurais besoin qu'on me détaille, si possible, le début de la ligne :"$0 !~ /^#/"
"$0" a quelle valeur ?
"!~" De mes humbles connaissances, le "!" inverse une demande... Qu'est ce que le tilde fait là !? big_smile
^# = les lignes qui commencent par "#"
Bon pour l'avoir testée l'ensemble veut dire d'afficher les 6 champs de toute les lignes qui ne commencent pas par "#", de là à l'adapter... roll
J'ai essayé qqu bidouilles genre /^#:/ avec ou sans " ; /^#"  "/ Ça ne donne rien... neutral


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#8 03-03-2015 11:53:31

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

alors en reprend la commande awk :


awk '$0 !~ /^#/ {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 }' </etc/fstab
 



D'abord, il faut savoir que awk travaille par ligne. Je veux dire, qu'il va lire ligne
par ligne sur l'entrée standard et exécuté la/les commande/s pour chaque ligne. On peut changer ce
comportement (avec la variable RS (Record Separator = séparateur d'enregistrement) qui vaut par défaut "\n" (caractère de nouvelle ligne)). C'est une façon de voir un fichier texte (ou non) comme une suite d'enregistrement
que l'on lit séquentiellement.

$0 représente la ligne complète (en fait un enregistrement) en cours de lecture.
!~ est bien la négation de ~. ~ demande à awk de chercher une correspondance de motif.
Ici le motif que j'ai employé est une expression rationnelle  (abusivement appelé régulière)
qui veut dire toutes les lignes qui commencent par un # (le ^ veut dire le début de la ligne,
# n'a pas de signification particulière dans ce contexte).

Donc comme tu l'as deviné, ça permet d'examiner les lignes qui ne commencent pas par un #.
Ensuite entre les { }, je demande d'afficher les « champs » de 1 à 6. Les champs d'un enregistrement
sont séparés par des caractères blancs (espace, tabulation et nouvelle ligne). Ce comportement peut
aussi être changé en utilisant la variable FS…

L'esprression rationnelle qui dé"signe les lignes qui commencent par un # suivis de rien ou d'espaces est


 /^# *$/
 


* signifie zéro ou plusieurs occurrences du caractère qui le précède (ici un espace)
$ signifie la fin de la ligne (c'est un point d'ancrage, comme ^ qui signifie le début de la ligne).
Donc pour afficher les lignes qui t'intéressent, on peut faire comme cela :


awk '$0 !~ /^# *$/ { print $0 }' </etc/fstab
 



Le problème de ce code, est qu'il va afficher des lignes vides, si elles contiennent des tabulations…
Pour éviter cela, on a recourt à une autre expression rationnelle. Il n'y a pas grand chose à changer.
L'expression rationnelle est :


/^#[ \t]*$/
 


[ \t] représente un caractère qui est soit un espace ou une tabulation.
L'espace se représente lui même et \t veut dire une tabulation.

C'est un peu long d'apprendre à se servir des expressions rationnelles, mais ça vaut le coup car
c'est un moyen puissant d'analyser un texte.

Bon, il y a pleins d'autres choses à apprendre à ce sujet… mais je ne compte pas refaire
la documentation… C'est quand même une belle introduction dans le sujet wink

Dernière modification par enicar (03-03-2015 11:55:38)

Hors ligne

#9 03-03-2015 13:26:32

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Merci M'sieur... Quel talent ! big_smile

Effectivement :

awk '$0 !~ /^#[  \t]*$/ {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 }' </etc/fstab


N'affiche plus les lignes vides ! smile
Me reste plus qu'à réussir à lui faire afficher que les 2 premières lignes pleines, et de tenter  de l'intégrer au script de base !
J'ai du boulot !
Je Re pour appeler à l'aide ou pour la correction ! big_smile

Dernière modification par Guizmo (03-03-2015 13:27:18)


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#10 03-03-2015 13:49:26

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Tu as repris la commande avec l'affichage par champ (et que pour 6 champs au maximum…).
À la place de


print $1 " " $2 " " $3 " " $4 " " $5 " " $6
 


Tu ferais mieux d'utiliser :


print $0
 


qui affiche l'enregistrement en cours d'évaluation (c'est à dire la ligne entière dans notre cas).
On peut même simplifier « print » seul est équivalent à « print $0 »…

Hors ligne

#11 03-03-2015 13:53:43

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Guizmo a écrit :


Merci M'sieur... Quel talent !


Je t'en prie wink Et ce n'est pas du talent, ce sont juste quelques connaissances
acquises au fil du temps et des besoins. J'ai besoin de regarder les pages man
très régulièrement, je ne connais pas tout cela par cœur. Surtout quand ce sont
des choses que je n'ai pas utilisées depuis longtemps… tongue

Hors ligne

#12 04-03-2015 11:34:32

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Bonjour à tous ! smile
@enicar
Ouep... Ben je n'en suis pas là ! big_smile
Je n'arrive pas à intégrer

awk '$0 !~ /^# *$/ { print $0 }' </etc/fstab


Dans le script initial ! yikes
Au pire c'est pas un drame, c'est juste un exercice...


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#13 05-03-2015 09:06:07

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Bon, as-tu suffisamment cherché ?
Mais reprenons tout ça. D'abord, je ne pense que l'exercice consistait à supprimer les lignes « vides »
qui n'avaient qu'un # en début de ligne.
Au fait sais-tu à quoi sert de mettre un # dans ce fichier ? Si tu ne sais pas :


man fstab
 



Ensuite, quand il demande :

Maintenant, comment analysez-vous les champs séparés de chaque ligne ?


Je pense qu'il parle des champs des lignes qui ne commencent pas par un #. Rappelle toi, je t'ai
dit que chaque ligne était un enregistrement, et que les champs sont séparés par des espaces ou des tabulations.
Ce n'est pas un hasard, s'il a choisi le fichier fstab qui se prête très bien à cet exercice de découpage
en plusieurs champs.

Dans le message numéro #3 de ce fil, j'avais dit :

enicar a écrit :


Il y a 6 champs : <file system> <mount point>   <type>  <options>       <dump>  <pass>


Ces Champs sont dans les lignes qui ne sont pas vides et qui ne commencent pas par un #.
Au fait , les lignes qui commencent par un # sont des commentaires, et donc ces lignes
ne servent pas la fonctionnalité du fichier fstab… (as-tu regardé man fstab ? Tu devrais… wink)

Remarque bien, que ces 6 champs, dans la syntaxe du fstab, sont bien séparés par des espaces ou des
tabulations. C'est pour cela que awk est particulièrement bien adapté à l'analyse de ce fichier.


Enfin, si tu veux juste intégré :


awk '$0 !~ /^# *$/ { print $0 }' </etc/fstab
 


dans le script original, il faut utiliser un tube, comme cela :


#!/bin/bash
# Lit les lignes de /etc/fstab.

Fichier=/etc/fstab

awk '$0 !~ /^# *$/ { print $0 }' <$Fichier  | {
     
      read ligne1
      read ligne2

      echo "La première ligne dans $Fichier est :"
      echo "$ligne1"
      echo
      echo "La deuxième ligne dans $Fichier est :"
      echo "$ligne2"
}

exit 0
 


Évidemment, c'est un peu plus complexe… Remarque que l'on ne peut plus séparé l'affectation des
variables $ligne1 et $ligne2 de l'affichage de ces variables. La lecture et l'affichage sont dans le même
bloc d'accolade { … }. Ceci est du au fait que l'on utilise un tube ; bash va créer un nouveau sous shell.
Donc on va avoir deux processus qui communique via le tube (c'est le principe même d'un tube).
Le premier processus, awk ici, va écrire dans le tube, et l'autre processus va lire dans le tube.
Ce second processus est le sous shell qu'à lancer bash et correspond à tout le bloc qui est entre accolade.

Comme, ce sont deux processus différents, cela veut dire que les variables $ligne1 et $ligne2 qui sont
affectées dans le second processus, n'existent pas dans le premier ! Et donc si l'on sort, le code
qui affiche les variables $ligne1 et $ligne2 du bloc { …}, rien ne ve s'afficher, puisque ces variables n'existe pas
dans le premier shell.
En effet, dès que le bloc {…} est fini, le sous shell se termine et les variables $ligne1 et $ligne2 sont perdues.
C'est un bel exemple d'une  sorte de variables locales wink

Enfin tu remarqueras, que la seconde ligne de fstab est bien ignoré.

Bon, je sais, ça fait beaucoup… mais voilà ce que c'est de poser des questions tongue

Dernière modification par enicar (05-03-2015 15:12:58)

Hors ligne

#14 05-03-2015 10:40:05

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Remarque, ça ne répond pas à l'exercice demandé, qui était de séparer
les champs des lignes « utiles » de fstab (c'est à dire, celles qui ne
sont ni vides, et qui ne débutent pas par un #).

Il existe une façon « simple » de séparer ces champs avec bash. On va
quand même filtrer les commentaires et les lignes vides avec grep wink


#!/bin/bash
# Lit les lignes de /etc/fstab.

Fichier=/etc/fstab

while  read -a champs
do
    if echo ${champs[0]} |grep -qv '^#\|^$'
    then
        echo "système de fichier : ${champs[0]} ; Point de montage : ${champs[1]}"
    fi
done <$Fichier

exit 0
 



Je n'affiche que les deux premiers champs, en nommant leur fonction. Les
6 champs sont dans les variables champs[0] à champs[5]. On peut utiliser
celui que l'on veut indépendamment.

Quelques explications sont nécessaires.

Tout d'abord, read lit des enregistrements qui, par défaut, sont séparés
par des nouvelles lignes. Dit autrement, par défaut read lit une ligne
entière à la fois.

« read -a champs » : L'option « -a » va demander à read
de découper chaque ligne en plusieurs champs qui correspondent à des
mots (séparés par des espaces). Et la variable « champs » va être
affecté comme un tableau, c'est à dire que nos six champs se
retrouveront dans une case différentes d'un tableau. Pour accéder au
premier élément, on utilise ${champs[0]}, au deuxième : ${champs[1]}, et
ainsi de suite jusqu'au sixième : ${champs[5]}.
Les indices des tableaux commencent à zéro dans bash.

grep -qv  '^#\|^$' :

-qv : raccourcis pour dire -q -v.
      -q soit silencieux, au lieu d'afficher les lignes qui
      correspondent, grep n'affiche rien. En effet, ce qui nous
      intéresse ici, c'est juste de savoir si le motif correspond ou
      pas. Seule la valeur de retour de grep nous intéresse.
     
      -v inverse la correspondance, c'est à dire que grep
      trouve une correspondance quand le motif ne correspond pas !


'^#\|^$' : les  '' sont là pour protéger le motif de l'interprétation du
           shell.
           
           Ici j'utilise une alternative entre deux motifs.
           C'est le \| qui permet de signifier cette alternative.
           
           ^# est une ligne qui débute par un #(un commentaire quoi wink)
           ^$ est une ligne vide.
           
           Rappel : ^ veut dire début de chaine et $ veut dire fin
           de chaine.
           Donc le motif en entier désigne les lignes qui débutent par
           un # ou les lignes vides wink

Bon, je pense que pour le while do… done et le if … then … fi, tu te doutes de ce que c'est wink
Enfin, la syntaxe de bash n'est pas la plus évidente, les langages de scripts comme python
ont une syntaxe bien plus claire wink

Dernière modification par enicar (08-03-2015 18:01:00)

Hors ligne

#15 05-03-2015 12:23:51

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Wouaou !
y en a 4 tomes ! big_smile
Encore merci enicar !
Le tps que je décortique ça, j'aurai peut-être des questions à poser sur tes explications (je ne savais mm pas qu'il y'avait un "man fstab" !)
Je vais commencer par ça smile

Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#16 05-03-2015 13:10:25

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

J avais essayé avec le tube, sans déplacer l'accolade et sans utiliser $Fichier dans la commande "awk", ça n a pas marché

#!/bin/bash
# Lit les lignes de /etc/fstab.

 awk '$0 !~ /^#  *$/ { print $0 }' </etc/fstab |

 
{
read ligne1
read ligne2
read ligne3
}
 


J'ai tenté en mettant un > à la fin de la ligne awk, sans plus de succès, j'étais pas si loin d'y arriver... J'ai bricolé les " les ' les } les ...'#]!?}{ ! ! !' yikes
big_smile... C'est des sadiques les programmeurs ! lol
Je continue...


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#17 05-03-2015 14:29:47

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Tu expliques bien !

Ici j'utilise une alternative entre deux chaines.
           C'est le \| qui permet de signifier cette alternative.



Donc là le \ avt le pipe est là pour que ce soit à nouveau le shell qui interprète le pipe, si j'ai bien compris...
Bien que... là il voudrait dire "oubien" et non "diriger la sortie d'une commande vers l'entrée une autre"...
Bravo pour tes explications ! wink

Dernière modification par Guizmo (05-03-2015 14:42:44)


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#18 05-03-2015 14:43:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

T'y est pas du tout ! Tout ce qui est entre les ' ' n'est pas interprété par le shell et c'est ce que je dis :

enicar a écrit :


les '' sont là pour protéger le motif de l'interprétation du shell.


Il y a quand même un piège ce sont deux ', et non une ". Ce qui, à la lecture, n'est pas évident :
'' "
Il faut avouer que la différence ne saute pas aux yeux…
J'aurais mieux fait d'écrire : « les deux ' sont là pour protéger le motif de l'interprétation du shell ».

Comme quoi, je peux encore mieux faire wink

Et donc le signe | dans le motif qui est interprété par grep n'a rien à voir avec un tube.
Seulement pour grep, | signifie simplement |. Par contre \| signifie une alternative entre deux chaines.
Je sais, c'est un peu alambiqué… j'aurais mieux fait d'utiliser egrep, qui a des expressions rationnelles
plus cohérentes… mais bon, vu que je n'utilise jamais egrep… tongue

Dernière modification par enicar (05-03-2015 16:16:31)

Hors ligne

#19 05-03-2015 15:10:24

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Parser le fichier fstab (awk/bash)

Peut-être de parler de simple quote ' et de double quote " ? smile

enicar a écrit :

T'y est pas du tout ! Tout ce qui est entre les ' '


Devient :

T'y es pas du tout ! Tout ce qui est entre les simples quotes ' '


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#20 05-03-2015 15:16:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

@smolski, appelle-t-on « ' », une quote ? Pour moi, ça serait une apostrophe…
Oui, je pinaille, je sais qu'en informatique, on appelle cela une simple quote tongue
Donc c'est une bonne suggestion de ta part, merci wink

Hors ligne

#21 05-03-2015 15:59:41

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Oui ben je ne vais pas pleurer non plus... big_smile
En plus j'avais compris dans le contexte de ta phrase que le '' était 2 fois '
Le truc c'est que mélange tout ! ! neutral
Parce-que dans le shell le | sert de tube alors que avec grep, je suppose que le \ sert à ce que | veuille dire "ou-bien" comme je l'avais vu ici : http://openclassrooms.com/courses/repre … -le-manuel

a|b : vous pouvez écrire l'option « a » OU « b », mais pas les deux à la fois ;


Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#22 05-03-2015 16:05:28

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Parser le fichier fstab (awk/bash)

Guizmo : L'entraide que te propose ici enicar sert aussi à nombre de visiteurs qui n'ont pas tous les mêmes compétences. Si on peut désembrouiller les explications, c'est cool. cool

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#23 05-03-2015 16:10:27

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Parser le fichier fstab (awk/bash)

Oui, c'est bien cela que veut dire le \|, un ou.
Dans le contexte des expressions rationnelles (souvent abrégé en regex pour regular expression),
il n'est pas précisé si le « ou » doit  être exclusif ou pas.
Il l'est de toute façon, car grep va prendre la première correspondance trouvé, sans chercher à savoir
si une autre peut convenir. C'est la responsabilité du programmeur d'exprimer correctement ce qu'il
désire pour ne pas avoir des cas ambigües.

Dans ma regex, il n'y avait pas de problème, car une ligne qui commence par # et complétement
différente d'une ligne vide. Donc, on a bien une disjonction des cas wink

Hors ligne

#24 05-03-2015 17:25:26

Guizmo
Membre
Lieu : Mello dans l'Oise
Distrib. : Jessie
Noyau : Linux 3.2.0-4-686-pae
Inscription : 03-02-2015

Re : Parser le fichier fstab (awk/bash)

Ça marche wink
j'ai utilisé celui là pck c'est le seul que je connais ! smile

Je suis débutant, si à la lecture d'un de mes postes vous avez des suggestions, des liens à me donner ou n'importe quoi qui puisse me faire avancer, n'hésitez pas ! !
Merci smile

Hors ligne

#25 08-03-2015 14:36:59

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : Parser le fichier fstab (awk/bash)

Plop,
J'ai renommé le sujet du fil de discussion.
Merci de garder en tête que le sujet doit contenir suffisamment de mots-clés pour être trouvable par un internaute ayant le même problème smile
Au passage, cela justifie également le 1 problème = 1 sujet, 2 problèmes = 2 sujets cool

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

Pied de page des forums