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 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 roll

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é big_smile

Dernière modification par iznobe (Le 27/03/2025, à 12:52)

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 hmm
Donc si un expert passe par là merci à lui.

Ma source d'inspiration. mais pas de compréhension sad

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)

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  big_smile mais que comme c' est un caractere special .
remarque tu peux toujours faire 2 cut tongue dont un dernier pour enlever le caractère special final tongue

Hors ligne

#9 Le 27/03/2025, à 13:39

nany

Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)

Bonjour,



iznobe a écrit :

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:~$

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 tongue

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 big_smile
avec le double % , ca marche effectivement .

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 ? lol

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 sad 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)

Hors ligne

#21 Le 27/03/2025, à 20:51

nany

Re : [Résolu] Cut et § ... cela marcherait-il ? ... presque ;-)

BrunoL a écrit :

@nany : désolé mais chez moi

$ echo $'\xA7'
?
$echo $'\xa7'
?

donne pas le résultat prévu sad 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.

En 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.

En 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