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 13/04/2023, à 16:52

Akatu

[RÉSOLU] Retour arrière au début d'une ligne d'un fichier

Bonjour,

Imaginons qu'on a un fichier foo.txt qui contient ceci :

<item component="ComponentInfo{aaa/bbbbb}" drawable="ubuntu" />
<item component="ComponentInfo{cc/dddd}" drawable="kde
neon" />
<item component="ComponentInfo{fffff/ee}" drawable="arch" />

Sur la 2e ligne, le nom drawable "kdeneon" est sur 2 lignes, je voudrais que ça devienne ceci :

<item component="ComponentInfo{aaa/bbbbb}" drawable="ubuntu" />
<item component="ComponentInfo{cc/dddd}" drawable="kdeneon" />
<item component="ComponentInfo{fffff/ee}" drawable="arch" />

Le numéro de la ligne qui a un retour à la ligne est aléatoire. Je l'identifie actuellement via cette commande :

grep -vn '^<item component' foo.txt | head -n 1 | cut -d: -f1

Le nom du drawable posant problème est également aléatoire. Dans l'exemple c'est "kdeneon" mais demain, ça pourrait être "linuxmint".

Est-ce que vous voyez comment mettre le "neon" à la suite du "kde" ? Je suis parti sur le retour arrière mais un "suppr" depuis la ligne du dessus marche :-)

Le code sera dans une boucle donc inutile de rechercher d'autres occurrences ici.
Merci ! Merci !!

Dernière modification par Akatu (Le 14/04/2023, à 09:36)


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#2 Le 13/04/2023, à 17:12

MicP

Re : [RÉSOLU] Retour arrière au début d'une ligne d'un fichier

Bonjour

mic@deb116:~$ cat foo.txt
<item component="ComponentInfo{aaa/bbbbb}" drawable="ubuntu" />
<item component="ComponentInfo{cc/dddd}" drawable="kde
neon" />
<item component="ComponentInfo{fffff/ee}" drawable="arch" />
mic@deb116:~$ 

Si il faut supprimer dans le fichier foo.txt
tous les retours à la ligne qui ne sont pas précédés du caractère >
alors, en utilisant sed :

mic@deb116:~$ sed ':a;N;$!ba;s/\([^>]\)\n/\1/g' foo.txt
<item component="ComponentInfo{aaa/bbbbb}" drawable="ubuntu" />
<item component="ComponentInfo{cc/dddd}" drawable="kdeneon" />
<item component="ComponentInfo{fffff/ee}" drawable="arch" />
mic@deb116:~$ 

Hors ligne

#3 Le 14/04/2023, à 09:43

Akatu

Re : [RÉSOLU] Retour arrière au début d'une ligne d'un fichier

Bonjour MicP,

C'est parfait, merci beaucoup.
Je cherche maintenant à faire la même chose dans une liste de fichiers. Certains ont un retour à la ligne également. Si tu as une idée, je suis également preneur.

Exemple avec le fichier smiledirectclub :

~/Tmp ❯ ls
 smarty.png  'smiledirect'$'\n''club.png'   sms_messenger.png   sms_organizer.png   ZIP
~/Tmp ❯ 

EDIT : trouvé avec

rename 's/\n//;' *

Dernière modification par Akatu (Le 14/04/2023, à 09:47)


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne