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 20-11-2020 12:29:13

Anonyme
Invité

Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Bonjour,

j'ai un texte :

 
    TITLE "Sealed With a Kiss [FFP]"     PERFORMER "Brian Hyland"
    TITLE "Sherry [G92]"     PERFORMER "Four Seasons"
 



et je voudrais sortir ceci :



   
    TITLE "Sealed With a Kiss [FFP]"     PERFORMER "Brian Hyland"
    TITLE "Sherry [G92]"                 PERFORMER "Four Seasons"



en prenant comme repère PERFORMER de la première ligne.

Il faut absolument ne pas utiliser AWK à cause d'un problème de simple quote qui me fait foirer la suite de mon travail.
Merci par avance.

Dernière modification par Anonyme (20-11-2020 12:35:43)

#2 20-11-2020 14:29:32

saitama-san
Membre
Distrib. : stable
(G)UI : gnome
Inscription : 28-07-2019

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Hors ligne

#3 20-11-2020 14:56:46

zaphir
Membre
Inscription : 10-09-2010

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Bonjour,

Effectivement, tu pourrais essayer avec la commande "column" comme expliqué dans mon message ici:
https://debian-facile.org/viewtopic.php … 32#p348132

Le souci c'est que tes chaines de caractères comportent des espaces, il faudrait retravailler ton fichier pour remplacer ces espaces par un caractère qui puisse servir de délimiteur.

Hors ligne

#4 20-11-2020 15:27:41

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

C'est un peu une arnaque, mais ça fonctionne =P :

cat temp | sed -e "s/PERFORMER/;,/" | column -t -s ";" | sed -e "s/,/PERFORMER/g"


ou sans " :

cat temp | sed -e s/PERFORMER/\;\,/g | column -t -s \; | sed -e s/\,/PERFORMER/g

Dernière modification par David5647 (20-11-2020 15:30:17)

Hors ligne

#5 20-11-2020 15:49:54

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Hello
J'avais vu aussi cette commande column sur un autre poste
je me suis appuyer sur le caractére @ comme délimiteur de colonne
tant pis si y'en a qui on posté un truc avant moi ( je tâtonne big_smile)

sed -e "s/TITLE/@TITLE/g" -e "s/PERFORMER/@PERFORMER/g" test.txt| column -n -t -s "@" > test2.txt
 



me suis inspiré par la
https://www.howtoforge.com/linux-column-command/
https://debian-facile.org/doc:systeme:sed
edit: modif pour créé le fichier final

Dernière modification par Croutons (20-11-2020 16:09:01)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#6 20-11-2020 16:49:04

Anonyme
Invité

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

@Croutons

Salut,

sed -e "s/TITLE/@TITLE/g" -e "s/PERFORMER/@PERFORMER/g" test.txt| column -n -t -s "@" > test2.txt



j'en suis toujours à bloquer sur le même truc hmm



column: l'option --table est requise pour toutes les --table-*




@David5647

Que dire, à part que ça fonctionne :

smile

cat file.txt | sed -e s/PERFORMER/\;\,/g | column -t -s \; | sed -e s/\,/PERFORMER/g




    TITLE "Sealed With a Kiss [FFP]"       PERFORMER "Brian Hyland"
    TITLE "Sherry [G92]"                   PERFORMER "Four Seasons"

 

Dernière modification par Anonyme (20-11-2020 16:52:41)

#7 20-11-2020 17:45:21

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Anonyme a écrit :

@Croutons
Salut,
sed -e "s/TITLE/@TITLE/g" -e "s/PERFORMER/@PERFORMER/g" test.txt| column -n -t -s "@" > test2.txt
j'en suis toujours à bloquer sur le même truc hmm
column: l'option --table est requise pour toutes les --table-*


fonctionne très bien chez moi tu as du loupé un truc
fichier de départ test.txt
fichier d'arrivé test2.txt
bon après j'ai supposé qu'il fallait un fichier  au final

Dernière modification par Croutons (20-11-2020 17:48:56)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#8 20-11-2020 17:58:56

Anonyme
Invité

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Je veux bien mais là ça s'acharne tout même !!!!  lol lol lol
Il doit y avoir une vilaine bête planquée dans mon pc big_smile

test.txt :

 
    TITLE "Sealed With a Kiss [FFP]"     PERFORMER "Brian Hyland"
    TITLE "Sherry [G92]"     PERFORMER "Four Seasons"
 





[patrick@PC1 nouveau dossier]$ sed -e "s/TITLE/@TITLE/g" -e "s/PERFORMER/@PERFORMER/g" test.txt| column -n -t -s "@" > test2.tx
column: l'option --table est requise pour toutes les --table-*
[patrick@PC1 nouveau dossier]$
 



test2.txt :

Une bulle

#9 20-11-2020 18:21:35

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

column --version


column de util-linux 2.36



@Croutons : ta commande doit fonctionner sous buster, mais pas pour les versions suivantes, l'option -n ne fait plus la même chose.
Pas de bol ^^. Ca marche si l'on enlève cette option

manpage buster
manpage bullseye

Hors ligne

#10 20-11-2020 18:25:20

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

ba c'est pas banale comme  truc
je viens de recommencé fonctionne très bien

cat test2.txt


TITLE "Sealed With a Kiss [FFP]"       PERFORMER "Brian Hyland"
TITLE "Sherry [G92]"                   PERFORMER "Four Seasons"

Dernière modification par Croutons (21-11-2020 09:01:22)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#11 20-11-2020 18:38:52

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Croutons a écrit :

Edit: en image


^^ On te croit

En re-parcourant les manapges :

-n [...] This option is a Debian GNU/Linux extension.


Je suppose que l'usage veut, lorsque l'on développe un programme, qu'on ne change pas le fonctionnement d'une option, on la supprime, on en crée une nouvelle, mais on ne réemploi pas la commande à un autre but. Sauf, quand c'est rajouté par un tiers : debian. Double pas de bol =P

Hors ligne

#12 20-11-2020 18:46:22

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

j'ai pas compris j'ai testé mettre dans un script ça fonctionne aussi

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#13 20-11-2020 19:16:00

Anonyme
Invité

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

Croutons a écrit :

ba c'est pas banale comme  truc
je viens de recommencé fonctionne très bien

cat test2.txt


TITLE "Sealed With a Kiss [FFP]"       PERFORMER "Brian Hyland"
TITLE "Sherry [G92]"                   PERFORMER "Four Seasons"



Edit: en image
https://pic.infini.fr/EX5VPOms/DojsI3kk.gif



Toi, tu me cherches !!!! big_smile big_smile big_smile

EDIT
Moi qui suis sous Arch, ça file les versions. On doit sûremment en perdre en route des options tongue

Dernière modification par Anonyme (20-11-2020 19:20:17)

#14 21-11-2020 09:03:07

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Aligner les mêmes mots de chaque ligne avec celui de la 1ère ligne

donc sans le  -n je vois pas a quoi ça sert d'ailleur j'avais fais un copier coller de l'exemple

sed -e "s/TITLE/@TITLE/g" -e "s/PERFORMER/@PERFORMER/g" test.txt| column -t -s "@"


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

Pied de page des forums