Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.
nombre réponses : 25

#0 -1 »  [RESOLU] BASH: Appliquer une commande à une seule colonne d'un txt » Le 12/08/2014, à 16:04

Link_Octree
Réponses : 6

Bonjour,

Je dispose du fichier texte suivant:

 Stade de Reims	2 - 2	 Paris Saint-Germain
 SC Bastia	3 - 3	 Olympique de Marseille
 Evian TG FC	0 - 3	 SM Caen
 EA Guingamp	0 - 2	 AS Saint-Etienne
 LOSC Lille	0 - 0	 FC Metz

Je voudrais supprimer les espaces se trouvant juste avant le nom de l'équipe 1, et juste avant celui de l'équipe 2.
Je tiens à faire celà en apprenant comment restreindre une commande sur une colonne en particulier (même si ce n'est pas la méthode la plus "propre" car je compte m'en resservir pour d'autres usages par la suite).

Le code que j'aimerais utiliser serait quelque chose comme ceci:
cat fichier.txt | cut -f3 => pour la "restriction"
sed -i 's/^ *//' fichier.txt => pour la suppression de l'espace en question

Le soucis, c'est que je ne sais pas comment "enchainer" les deux commandes.

Si quelqu'un à une idée, merci d'avance !

#1 Re : -1 »  [RESOLU] BASH: Appliquer une commande à une seule colonne d'un txt » Le 13/08/2014, à 08:31

Link_Octree
Réponses : 6

Salut vous deux,

pingouinux: Effectivement, je voulais bien supprimer les espaces en début de colonne 1, et en début de colonne 3. Je n'ai pas encore testé ta commande mais je fais çà dès que possible.

Par contre, comme je l'ai précisé en gras dans mon post, et même si c'est pas la plus performante/propre des méthodes, çà serait vraiment important pour moi d'apprendre à "restreindre" une commande sur une colonne en particulier (avec cut, ou un outil similaire) car j'ai la certitude que çà me servira dans un autre contexte plus tard.

Vos commandes seds, bien que beaucoup plus efficaces je n'en doute pas, me permettent pas de les adapter à des cas similaires vu que je ne maitrise vraiment pas sed autant que vous.

Merci d'avance smile

#2 Re : -1 »  [RESOLU] BASH: Appliquer une commande à une seule colonne d'un txt » Le 13/08/2014, à 18:44

Link_Octree
Réponses : 6

Je suis en train de tester tout celà en ce moment même, merci beaucoup pingouinux !

La première solution m'intéresse particulièrement, j'ai la certitude que je vais me servir souvent de cette structure big_smile

Merci encore, sujet résolu !

#3 -1 »  Restreindre grep à une collonne uniquement ? » Le 17/06/2014, à 18:10

Link_Octree
Réponses : 8

Hello,

J'ai le fichier visible ci-dessous,
Je voudrais que ma commande retourne le numéro de chaque ligne, avant d'afficher la valeur qu'elle contient, mais qu'elle n'affiche à l'écran que les lignes dont la valeur de la seconde colonne est égale à 5.

2
1
3
1
4
2
1
3
2
1
1
3
2
1
1
8
2
2
3
1
1
5
4
1
1
1
1
8
1
4
1
2
3
1
1
2
1
1
3
1
1
3
1
3
1
5
5
3
1
8
2
3
2
1
1
4
3
3
3
1
10
4
3
5
3
2
7
1
3
1
2
3

Je ne peux pas utiliser cut de la façon dont j'ai l'habitude de le faire car j'aimerais retrouver le numéro de ligne dans le rendu, sous la forme:

 
    22	5
    46	5
    47	5
    64	5

Si vous aviez des propositions de solutions, de préférence des codes assez simples à comprendre, pour que je puisse l'adapter à d'autres scripts, merci smile !

#4 Re : -1 »  Restreindre grep à une collonne uniquement ? » Le 17/06/2014, à 19:24

Link_Octree
Réponses : 8

C'est bien celà oui, je teste celà dès que possible merci smile

Connaitrais-tu une variable pour afficher toutes les lignes (précédé du numéro de ligne) contenant une valeur supérieure à 5 ? Ou moins proprement une valeur de 5, 6, 7, etc jusqu'à 25 ?

Merci beaucoup !

#5 Re : -1 »  Restreindre grep à une collonne uniquement ? » Le 18/06/2014, à 20:26

Link_Octree
Réponses : 8

Merci beaucoup les gars, les deux solutions fonctionnent parfaitement smile

#6 Re : -1 »  Restreindre grep à une collonne uniquement ? » Le 20/06/2014, à 16:52

Link_Octree
Réponses : 8

Plutôt que d'ouvrir un autre thread pour çà:

J'ai intégrée la solution proposée par @pingouinux dans mon script:

nl fichier | awk '$2>=5'

A présent, celà m'arrangerais de pouvoir affecter le nombre minimal (5) dans une variable que je pourrais réutiliser pour obtenir un code du type:

nombre_mini=5
nl fichier | awk '$2>=$nombre_mini'

Celà pose des erreurs d'interprétation dans mon script, je pense que c'est lié aux simple quote, mais le fait de les remplacer par des doubles ne résoud pas le problèmes car à ce moment là, la partie "$2" semble être interprétée anormalement à son tour.

Si vous aviez une idée de solution pour résoudre celà, merci beaucoup, à nouveau smile !

#7 Re : -1 »  Restreindre grep à une collonne uniquement ? » Le 21/06/2014, à 16:13

Link_Octree
Réponses : 8

Merci pour le trick, çà fonctionne parfaitement smile

#8 -1 »  Remplacer une chaine de caractères par un fichier txt entier avec sed » Le 23/03/2014, à 14:33

Link_Octree
Réponses : 3

Bonjour,

Après une heure de galère/google, je me résoud à poser la question ici:
Je souhaites remplacer la chaine "a_remplacer" du fichier texte squelette.txt par plusieurs autres lignes contenues dans le fichier variable.txt.

squelette.txt

0
a_remplacer
4

variable.txt

1
2
3

J'ai essayé plusieurs solutions (mon séparateur est la charactère dièse puisque mon fichier devrait contenir des slash à termes):

variable=`cat variable.txt`
sed -i "s#a_remplacer#$variable#g" squelette.txt
variable=`cat variable.txt`
sed -i "s#a_remplacer#${variable}#g" squelette.txt[
sed -i "s#a_remplacer#`cat variable.txt`#g" squelette.txt

Le fait que contienne plusieurs lignes ne semble pas plaire à sed qui me renvoi le message suivant:

sed: -e expression #1, char 15: unterminated `s' command

Si quelqu'un a une idée, merci d'avance smile

#9 Re : -1 »  Remplacer une chaine de caractères par un fichier txt entier avec sed » Le 24/03/2014, à 15:07

Link_Octree
Réponses : 3

Merci @casperfr & @credenhill: vos deux méthodes fonctionnent parfaitement smile

#10 -1 »  [RESOLU] Appliquer un remplacement sed sur une seule colonne » Le 21/03/2014, à 08:13

Link_Octree
Réponses : 5

Salut,

J'ai le fichier structuré suivant 1.txt:

27ème journée	09/03/2012 - 20:00	 ESTAC Troyes  	0 - 1	  Châteauroux
26ème journée	02/03/2012 - 19:00	 Châteauroux  	2 - 2	  Stade de Reims

Je compte intégrer plus tard ce fichier dans une page html, pour celà je cherche à mettre en valeur les matchs où les résultats sont 2-2:

sed -i 's#2 - 2#<strong>2 - 2</strong>#g' 1.txt

Problème, cette commande impacte un autre champs que je ne voudrais pas changer:

27ème journée    09/03/2012 - 20:00     ESTAC Troyes      0 - 1      Châteauroux

Je souhaites donc restreindre ma commande sed seulement sur la colonne souhaitée, j'ai tenté de combiner cat, cut et sed avec des pipes mais sans succés jusque là...

cat 1.txt | cut -f4 -s | sed -i 's#0 - 0#<strong><font color="red">0 - 0</font></strong>#g' 1.txt

Pourriez-vous me proposer une solution fonctionelle proche du code ci-dessous svp ? Un code plus propre/intéligent/rapide existe sûrement mais si je ne suis pas en mesure de le comprendre pour l'adapter à d'autres projets, ce n'est pas ce que je recherche.

Merci d'avance !

#11 Re : -1 »  [RESOLU] Appliquer un remplacement sed sur une seule colonne » Le 23/03/2014, à 14:34

Link_Octree
Réponses : 5

Merci à credenhill, je suis plutot parti sur ta solution, bien que celle de psyphi semble aussi intéressante, quand à rpl je connaissais pas du tout, merci ek0892 pour cette découverte smile

#12 -1 »  [Bash] Remplacer une ligne par une autre » Le 08/03/2014, à 20:51

Link_Octree
Réponses : 1

Bonjour,

J'ai en entrée un fichier txt avec certaines lignes qui sont déja mises en forme dans la syntaxe qui m'intéresse, celle-ci:

2ème journée 	18/08/2013 - 14:00 	AS Monaco FC 	4 - 1 	Montpellier Hérault SC 	2e 	Vidéo
3ème journée 	23/08/2013 - 20:30 	AS Monaco FC 	0 - 0 	Toulouse FC 	2e 	Vidéo

D'autres lignes sont par contre pollués de données qui ne m'intéressent pas, comme ceci:

Les rencontres de AS Monaco FC - août 2013 1ère journée 	10/08/2013 - 21:00 	Girondins de Bordeaux 	0 - 2 	AS Monaco FC 	4e 	Vidéo
Les rencontres de AS Monaco FC - septembre 2013 4ème journée 	01/09/2013 - 21:00 	Olympique de Marseille 	1 - 2 	AS Monaco FC 	1er 	Vidéo

Ce que je voudrais faire, c'est uniformiser le tout, et faire en sorte que toutes les lignes soient dans la mise en forme voulue.

Je sais comment détecter les lignes avec la mise en forme inadaptée (grep "Les rencontres de AS Monaco FC"), je sais également supprimer les données superflues (cut -d ' ' -f10-50) mais je ne vois pas comment écraser les données précédements pollués par celles avec la mise en forme voulue (j'ai déja utilisé sed, mais là je vois pas comment faire).

Quelqu'un pourrait-il me donner un coup de main là dessus ? Je privilégie un code compréhensible me permettant de bien comprendre la chose pour l'adapter à d'autres scripts smile

Pour info le fichier en entree: http://pastebin.com/7b5vpKmf

Merci d'avance !

#13 -1 »  [Question] Détecter la nature et longueur d'une chaine de caractères » Le 22/01/2014, à 07:38

Link_Octree
Réponses : 15

Hello,

J'ai un fichier .txt contenant plusieurs valeurs sur la même ligne style:
NOM PRENOM NUM_CLIENT NUM_TEL

J'aimerais pouvoir isoler le contenu de NUM_CLIENT et NUM_TEL au sein de deux variables distinctes.
J'avais pensé à faire celà avec des cut en me basant sur les espaces, mais en cas de nom composé orthographié avec un espace celà pose problème si jamais nom et num_client sont séparés non pas par un espace mais par un tiret celà ne marche plus non plus...

Est-il possible de faire celà en se basant sur la nature et la longueur de la chaine de caractère du genre:
La chaine de caractère qui contient 5 chiffres sera le numéro de client, la chaine qui contient 10 chiffres sera le numéro de téléphone ?

Sauriez-vous comment faire celà svp ?

Merci d'avance smile

#14 Re : -1 »  [Question] Détecter la nature et longueur d'une chaine de caractères » Le 23/01/2014, à 20:18

Link_Octree
Réponses : 15

Re, et un sincère merci à vous trois pour votre précieuse aide smile

Je suis plutôt parti sur le code de Postmortem car c'est celui qui me semblait le plus lisible, et que je pensais donc le plus facile à modifier.

J'ai repensé un peu mes besoins, et il semblerait préférable, dans mon cas précis d'extraire finalement les données voulues non plus d'un .txt mais d'une variable déclaré plus tôt dans le script.
J'ai donc voulu modifier le code en fonction, sans trop de succés jusqu'à présent je dois dire:

#!/bin/bash

variable='PELTIER ALEXANDRE 40000121314 15634'

while IFS=' -' read -a extracteur; do
        let "num_client = ${extracteur[@]: -2:1}";
        let "num_tel = ${extracteur[@]: -1}";
done < $variable

Pour être sincère je ne comprends pas du tout l'utilité de la dernière ligne, j'ai déja utilisé les redirection ">" mais là çà semble être une sorte de redirection inversée, çà m'intrigue tongue

Merci encore smile

#15 Re : -1 »  [Question] Détecter la nature et longueur d'une chaine de caractères » Le 28/01/2014, à 00:09

Link_Octree
Réponses : 15

@pingouinux: Merci pour ta variante adaptée à mon script, j'ai testé et çà fonctionne parfaitement big_smile

@Postmortem: Peut-être que les séparateurs dont tu parles pourraient me servir pour une autre fonction:

J'ai en entrée une chaine de caractère de ce style (je ne peux pas influer sur la syntaxe de celle-ci):

7774445	27/01/14 21:35:14	70326	247525990412

Là encore je voudrais isoler ces champs dans des variables distinctes, le problème c'est que certaines données ont l'air séparés les unes des autres par des espaces, d'autres par des tabulations...

Ca fait une heure que j'essaie beaucoup de chose en combinant tr & cut pour supprimer les espaces multiples, en essayant une multitudes de commande sed dont la signification réelle m'échappe, sans succés hmm

Est-il possible de remplacer les tabs par des espaces uniques par exemple pour faire le reste avec cut ?
Sinon par curiosité, est-il possible d'isoler ces données dans des variables distinctes en fonction de leur format (style la chaine de 12 caractères sera affectée à la $variable_1, celle de 5 caractères à la $variable_2, etc ?

Merci encore pour votre aide, c'est très intéressant d'en apprendre un peu plus sur le shell smile

#16 Re : -1 »  [Question] Détecter la nature et longueur d'une chaine de caractères » Le 30/01/2014, à 21:00

Link_Octree
Réponses : 15

Merci encore pour toutes ces solutions proposées, vraiment sympa smile

Je suis pas loin d'être arrivé à ce que je veux, il me reste deux petits trucs que je sais pas faire, et j'arrive pas à trouver les bons termes à googler:

- En admettant que ma variable num_tel="0506070809", je voudrais masquer partiellement le numéro dans une variable style num_tel_partiel="05XXXX0809".
La piste que je privilégie est de remplacer les charactères 3 à 6 de ma variable par des X (celà pourrait me servir à d'autre choses également). Si possible sans sed, je doute pas de la puissance du truc mais j'ai du mal avec la syntaxe hmm

- Je voudrais à présent intégrer les valeurs de certaines variables dans un genre de squelette html.
Là aussi j'ai un début d'idée, utiliser les balises html disposant d'un id unique pour me repérer dans la page:
Repérer la bonne ligne en utilisant grep, puis insérer la valeur de ma variable avec echo. Le soucis c'est que je ne sais pas comment placer le "curseur" au bon endroit dans la ligne (<div id="num_tel">ici</div>). Même chose, variante sans sed privilégiée tongue

Encore merci à tous big_smile

#17 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 08/03/2013, à 16:46

Link_Octree
Réponses : 61

Mise à Jour du topic: Samsung est le leader incontestable en terme d'incompétence, de bétise, et plus largement de crétinerie.

#18 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 23/04/2013, à 09:25

Link_Octree
Réponses : 61

MaJ: Aux alentours du 15 Juin Mars, j'ai reçu un courrier de Samsung disant que la procédure de remboursement était finalisée, et que je serais remboursé sous un mois environ. Aujourd'hui (23 Avril) toujours aucun remboursement n'apparait sur mon compte.
Bref, le cauchemard continue, le Service Consommateur Samsung France est vraiment pitoyable (et je pèse mes mots).

Je suis actuellement en déplacement à l'étranger, j'éditerai le post avec les dates exactes quand je serai de retour en France

#19 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 23/04/2013, à 13:45

Link_Octree
Réponses : 61

C'est édité désolé, je sais pas pourquoi j'avais écrit Juin au lieu de Mars ^^

M'enfin, trois mois après le renvoi de la procédure, toujours aucun remboursement -_-

#20 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 04/05/2013, à 10:35

Link_Octree
Réponses : 61
vavincavent a écrit :

Bonjour,

Moi aussi j'ai lancé ma procédure de remboursement, pour un samsung np350v5c-s06fr avec windows 8 préinstallé.
Pour l'instant, pas de renvoi du PC, dixit samsung. Je vous raconte dès que c'est acté.

Après avoir lu mes déboires, c'est courageux de ta part de tenter le coup yikes
Ca m'intéresse de voir comment çà se passe pour toi smile

#21 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 19/05/2013, à 16:55

Link_Octree
Réponses : 61

@vavincavent: tu pourrais nous dire où tu en es de la procédure stp smile ?

#22 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 24/05/2013, à 18:40

Link_Octree
Réponses : 61

Topic mis à jour.

Jour historique, après 4 mois et deux semaines de procédure, après une immobilisation du PC 4 fois plus longue que prévu, après leur avoir envoyé ma facture 3 fois et mon RIB 4 fois, après une grosse dizaine de relances (téléphonique, mails, et courrier), je ne peux constater que Samsung a réalisé un exploit technique en ce jour.
Un de leur employé du service consommateur a en effet réussi à trouver comment réaliser un virement vers mon compte bancaire afin de me rembourser ce qui m'était dû depuis si longtemps :

Virement reçu aujourd'hui même de 48.09€

#23 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 05/10/2013, à 13:23

Link_Octree
Réponses : 61

@Cirius1987: Je réponds très tardivement:
La procédure que j'ai décrite en première page est tout à fait correcte. Lorsque j'ai fait ma demande de remboursement de l'OS en Février 2013, Samsung exigeait le renvoi du PC et la désinstallation de Windows par son SAV (je l'aurai volontier fait moi-même, j'en suis plus que capable et çà m'aurait fait éviter des frais d'envois et de l'attente).

Depuis Samsung a changé sa procédure comme l'a signalé vavincavent et il n'est plus nécessaire de retourner le PC à leur SAV pour obtenir le remboursement.
J'ai racheté un PC Samsung cet été, refait la procédure de remboursement et tout s'est déroulé comme vavincavent l'a décrit smile

Par contre c'est toujours aussi chaotique, j'ai du attendre plusieurs long mois pour obtenir le virement, les relancer au moins 3 ou 4 fois par courrier car leur hotline ne peut jamais rien faire... bref, faut être motivé.

#24 Re : -1 »  [Témoignage] Remboursement Licence Windows 8 par Samsung #Incompétence » Le 12/10/2013, à 09:43

Link_Octree
Réponses : 61

@Cirius1987: Oui, le changement de procédure pour moi c'est çà:
Je fais une demande, on me donne une procédure A (avec renvoi obligatoire de la machine en centre SAV pour désinstallation manuelle)
Vavincent fait une demande, on lui donne une procédure B (sans renvoi obligatoire, avec désactivation de la licence à distance)
Lorsque j'ai fait ma seconde demande pour mon second laptop, quelques mois après Vavincent, j'ai pu constater qu'on m'indiquait la procédure B, et que donc Samsung a effectivement changé ses procédures entre Février et Mai 2013.

Pour moi c'est une évidence qu'ils trainent les pieds bien au delà de leur incompétence pour décourager les demandeurs...