#1 Le 27/03/2025, à 12:08
- BrunoL
[Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Bonjour,
je dispose d'un Fichier.txt contenant des lignes de type :
zone1§zone2§zone3§...
Je souhaite extraite la zone2 mais :
$ cut --delimiter="§" -f2 Fichier.txt
cut: le délimiteur doit être un seul caractère
Saisissez « cut --help » pour plus d'informations.
cut me fait des misère et j'ai beau chercher je ne trouve rien.
Je serai très intéressé par la solution.
Merci.
Dernière modification par BrunoL (Le 27/03/2025, à 21:28)
Hors ligne
#2 Le 27/03/2025, à 12:34
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Je me réponds car après avoir modifié les termes de ma recherche, il apparaît que cut ne fonctionne pas avec "§".
Je vais donc me rabattre sur awk :
awk -F'§' '{ print $2 }' Fichier.txt
Au cas où ça dépanne quelqu'un
Dernière modification par BrunoL (Le 27/03/2025, à 12:35)
Hors ligne
#3 Le 27/03/2025, à 12:41
- soshy
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Il semble que cut gère les caractères qui sont encodés sur 1 octet (ce qui était historiquement vrai, mais plus aujourd'hui). En UTF-8, les caractères peuvent être encodé sur plusieurs octets, ce qui est le cas de §.
Le mieux c'est encore de remplacer cut par un équivalent qui fonctionnerait pour ton cas.
Par exemple en utilisant awk :
awk -F§ '{ print $2 }' Fichier.txt
Hors ligne
#4 Le 27/03/2025, à 12:51
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Bonjour et ça ? :
awk -F'§' '{print $2}' Fichier.txt
grillé
Dernière modification par iznobe (Le 27/03/2025, à 12:52)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#5 Le 27/03/2025, à 12:56
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Je relance ma question car à force de merder de travailler sur le sujet j'ai trouvé un truc que je ne comprends pas :
cut -f1 -d $'\xA7' Fichier.txt
Semble fonctionner ! je récupère un caractère bizarre en fin de zone (type ?) mais elle est sélectionnée .
Nota : le $ est nécessaire avant le délimiteur.
J'aimerai bien comprendre ce que j'ai fait car je préfère cut à awk
Donc si un expert passe par là merci à lui.
Ma source d'inspiration. mais pas de compréhension
Dernière modification par BrunoL (Le 27/03/2025, à 13:02)
Hors ligne
#6 Le 27/03/2025, à 13:03
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
le " $ " c ' est une variable et le \x probablement pour indiquer d' aller voir dans les caracteres ascii et A7 la correspondance : https://www.ascii-code.com/
cela dit , on peut pas dire que ce soit parfait vu :
iznobe@iznobe-pc:~$ cut -f2 -d $'\xA7' Fichier.txt
zone2
iznobe@iznobe-pc:~$
et le charactere qui ne s' imprime pas à la fin de "zone2 "...
Dernière modification par iznobe (Le 27/03/2025, à 13:05)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#7 Le 27/03/2025, à 13:07
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Effectivement mais je me dis que ce petit inconvénient pourrait être levé ...
Perso, je pars quand même la dessus car awk me donne des boutons.
@Iznobe : le $ est une variable.
Ok mais pourquoi dans ce cas ${} ne fonctionne pas ?
Dernière modification par BrunoL (Le 27/03/2025, à 13:12)
Hors ligne
#8 Le 27/03/2025, à 13:11
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
ba tu peux mettre un commentaire en expliquant avec cut mais que comme c' est un caractere special .
remarque tu peux toujours faire 2 cut dont un dernier pour enlever le caractère special final
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#9 Le 27/03/2025, à 13:39
- nany
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Bonjour,
le " $ " c ' est une variable
Le dollar ne sert pas exclusivement aux variables et il manque cette explication dans la page de linux-console.
En ligne
#10 Le 27/03/2025, à 13:52
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Synthétique et néanmoins clair. Merci nany.
Hors ligne
#11 Le 27/03/2025, à 14:05
- FrancisFDZ
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Bonjour,
Ne pourrait-on pas simplement échapper ce caractère ("\§"), et sinon pourquoi ?
[Edit] le lien de la répons de @nany semble répondre à ma question, il faudrait que je teste (flemme) [/Edit]
Dernière modification par FrancisFDZ (Le 27/03/2025, à 14:10)
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#12 Le 27/03/2025, à 14:06
- diesel
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Un peu lourd mais si tu es certain de ne pas avoir de '$' dans tes champs (on peut choisir un autre caractère si on veut) :
sed s/§/$/g <fichier.txt | cut -d'$' -f2
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#13 Le 27/03/2025, à 19:08
- diesel
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Et tout en bash :
while read ligne
do tmp=${ligne#*§} ; echo ${tmp%%§*}
done < fichier.txt
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 27/03/2025, à 19:10)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#14 Le 27/03/2025, à 19:12
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Et tout en bash :
Marche pôo :
iznobe@iznobe-pc:~$ while read ligne; do tmp=${ligne#*§} ; echo ${tmp%§*}; done < Fichier.txt
zone2§zone3
iznobe@iznobe-pc:~$ cat Fichier.txt
zone1§zone2§zone3§...
iznobe@iznobe-pc:~$
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#15 Le 27/03/2025, à 19:14
- diesel
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Il te manque un % dans le echo.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#16 Le 27/03/2025, à 19:19
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
j ' ai copier ta ligne de code tel quelle .
ce n' est donc pas à moi qui manque quelquechose
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#17 Le 27/03/2025, à 19:21
- diesel
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Ah bon ?
Pourtant, chez moi, ça marche parfaitement (avec '%%').
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 27/03/2025, à 19:21)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#18 Le 27/03/2025, à 19:32
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
ha ben oui , tu as changé entre temps
avec le double % , ca marche effectivement .
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#19 Le 27/03/2025, à 19:48
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Euh ... là j'ai décroché. Qu'est ce qui marche ? le echo ou le cut ? et le 2ème % y va où cote à cote ou ailleurs ;-)
Parce que si c'est pour simuler le cut c'est un peu lourd ! non ?
Que diriez-vous d'un truc du genre :
cut --delimiter=$'\xA7' -f2 Fichier.txt | echo ${maVar%?}
Le top, mais je n'arrive pas à récupérer le résultat du cut en variable.
@nany : désolé mais chez moi
$ echo $'\xA7'
?
$echo $'\xa7'
?
donne pas le résultat prévu La commande produit un ? sur fond blanc (viré du message forum !)
J'ai loupé un truc ?
Dernière modification par BrunoL (Le 27/03/2025, à 19:50)
Hors ligne
#20 Le 27/03/2025, à 19:52
- iznobe
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
mavariable=$(cut -d $'\xA7' -f2 Fichier.txt)
echo $mavariable
Dernière modification par iznobe (Le 27/03/2025, à 19:53)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#21 Le 27/03/2025, à 20:51
- nany
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
@nany : désolé mais chez moi
$ echo $'\xA7' ? $echo $'\xa7' ?
donne pas le résultat prévu
La commande produit un ? sur fond blanc (viré du message forum !)
J'ai loupé un truc ?
Non, tu n’as rien loupé.
Je n’avais pas vérifié et j’ai le même comportement.
En fait, pour afficher le caractère §, il faut faire :
echo $'\xc2\xa7'
Ce qui montre bien, comme l’a dit soshy, que le caractère § est encodé sur deux octets.
Donc, si tu tiens absolument à cut, il faut l’utiliser deux fois :
cut -d $'\xa7' -f2 Fichier.txt | cut -d $'\xc2' -f1
Ou bien :
cut -d $'\xc2' -f2 Fichier.txt | cut -d $'\xa7' -f2
Dernière modification par nany (Le 27/03/2025, à 21:24)
En ligne
#22 Le 27/03/2025, à 20:59
- Watael
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
§ est reconnu par cut comme contenant plus d'un caractère :
$ printf § | od -x --endian=big #ne me demandez pas pourquoi
0000000 c2a7
0000002
donc :
$ echo $'\xc2\xa7'
§
Dernière modification par Watael (Le 27/03/2025, à 21:08)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#23 Le 27/03/2025, à 21:27
- BrunoL
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Je vais prendre le double cut.
Merci à tous et bonne fin de journée.
Hors ligne
#24 Le 27/03/2025, à 22:09
- Watael
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
moi, je passerais à awk.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#25 Le 28/03/2025, à 16:18
- soshy
Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)
Après s'il faut à tout pris conserver cut il faut utiliser le cut des uutils et non de gnu. Celle-ci semble gérer le cas en présence comme attendu.
Comme quoi, la migration prévu vers uutils n'est pas qu'une bête réécriture en rust et apporte réellement quelque chose...
Hors ligne