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.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

nombre réponses : 25

#0 -1 »  Améliorer mon script de découpage de CSV » Le 25/07/2014, à 20:32

percherie
Réponses : 8

Bonsoir,


Je doit manipuler un gros CSV et pour garder la main, au lieu de faire ça à la main je tente un petit script. J'arrive d'un coté à découper le fichier toute les 10.000 ligne mais concernant un tris alphabétique en amont, je souhaite que la première ligne reste en place (titre des colonne dans un tableur)

bash decoupage.sh <fichier.csv> <nom_en_sortie>

Dans ce code, on peut définir un nom pour le fichier de sortie mais ça coince si je n'en défini aucun. Comment faire en sorte d'utiliser un nom de remplacement défini dans le code si aucun n'est choisi ? Comment placer la première ligne du fichier d'origine sur chaque fichier splité (sauf le premier) ?

#!/usr/bin/sh
split -l 10000 "$1" $2_
for i in $2* ; do mv $i $i.csv ; done

Dans ce code, le tris fonctionne très bien mais je souhaite ignorer la première ligne. Je pensait extraire son contenu, la supprimer du fichier, faire le tris et l'ajouter au début du fichier. C'est une usine à gaz. Peut être qu'une commande permet à "sort" d'ignorer la première ligne ?

cat fichier.csv | sort -t "," -k1n,1n > test.csv

Voilou, mon fichier d'origine n'est pas si énorme (300 mille entrées) mais c'est l'occasion de pratiquer un peut plus le bash ;-)

#1 Re : -1 »  Améliorer mon script de découpage de CSV » Le 26/07/2014, à 05:17

percherie
Réponses : 8

merci je me serait orienté naturellement vers la solution 1 sans penser à utiliser le répertoire tmp mais l'utilisation des pipe est vraiment plus chouette.

ça me fait pas mal de petite chose à consulter sur le man, c'est intéressant comme solution.

#2 Re : -1 »  Améliorer mon script de découpage de CSV » Le 31/07/2014, à 14:52

percherie
Réponses : 8

Merci à vous deux. J'ai découvert les commandes head et tail. c'est pas mal du tout. Par contre je n'ai pas compris la syntaxe en fin de pipe. Pourquoi le tiret présent juste avant la variable $destination permet de définir le résultat précédent sur la fonction split ?

Voici mon script commenté au passage

#!/bin/bash

# Récupération de la première ligne du fichier indiqué en entrée
ligne1=$(head -1 "$1")

# La variable destination vaut $2 si défini en seconde entrée, "split" autrement
destination=${2:-split}

# Lecture à partir 2° ligne | tris croisant de la première colonne, fin à la première | découpage toute les N ligne et enregistrement dans $destination
tail -n +2 "$1" | sort -t, -k1n,1n | split -l 1000 - "$destination"_

# Insertion de la 1er ligne du fichier source sur tous les fichier $destination
sed -si '1i'"$ligne1" "$destination"*

# Ajouter l'extension .csv sur les fichier découpés
for i in $destination* ; do mv $i $i.csv ; done

J'ai tenté de remplacer la dernière boucle for dans le pipe mais sans résulta.

#3 Re : -1 »  Améliorer mon script de découpage de CSV » Le 31/07/2014, à 17:40

percherie
Réponses : 8

Merci je comprend mieux pour split... concernant les doc en anglais il me faut la pierre de rosette pour m'en sortir mais avec le temps j'arrive de mieux en mieux à déchiffrer l'anglais informatique (je trouve plus simple que l'anglais basique)

#4 -1 »  Copier les dossiers et ignorer les liens symboliques » Le 25/06/2014, à 13:39

percherie
Réponses : 6

Bonjour,


Dans un dossier j'ai plusieurs type de dossier. Certains sont "réel" et d'autre sont des liens symbolique. Je souhaite copier uniquement les dossier "réel" et ignorer totalement les liens symbolique (comme si ils n'existaient pas).

J'ai fait plusieurs tentative mais sans résulta concret :

# crée une copie des liens ;-/
cp -aul * Nouveau\ dossier/

# essais avec xargs
find * -type d | xargs cp "{}" ~/Nouveau\ dossier
find * -type d | xargs cp ~/Nouveau\ dossier
find * -type d | xargs -t cp ~/Nouveau\ dossier

Un simple indice ou nom de commande me suffirait, je peut chercher sur internet comment y arriver.

Merci par avance.

Ps : comment copier des fichiers vers un dossier qui n'existe pas encore ? Pour que la création du dossier ce fasse au même moment.

#5 Re : -1 »  Copier les dossiers et ignorer les liens symboliques » Le 25/06/2014, à 15:19

percherie
Réponses : 6

Merci pour ton aide. J'ai tenté de définir le chemin avec le raccourcis qui renvoi vers le /home/<compte> (~/test) mais je m'en sort pas (tester avec guillemet, sans, apostrophe normal et inversé). En attendant je défini le chemin complet.

J'ai séché pendant 15 mins mais j'ai fini par trouvé qu'il manquait un crochet en début de condition. Depuis ça fonctionne très bien.

#6 Re : -1 »  Copier les dossiers et ignorer les liens symboliques » Le 25/06/2014, à 15:36

percherie
Réponses : 6

Oups en utilisant le script je viens de me rendre compte que je doit définir à l'avance le nom des dossiers que je souhaite copier. Certains dossier doivent rester en place.

Comment définir une liste à placer dans la condition de la boucle ? à moins qu'il faut inclure la condition supplémentaire dans la boucle ? Une simple page vers de la documentation et je ferai mes tests empirique.

En tout cas merci pour ton aide.

#7 Re : -1 »  Copier les dossiers et ignorer les liens symboliques » Le 26/06/2014, à 22:27

percherie
Réponses : 6

Nikel, en définissant à l'avance les dossiers à copier ça me raccourcis énormément le code. Merci pour tout

#8 -1 »  Pourquoi les "Mises à jour non gérées" sont activé par défaut ? » Le 22/06/2014, à 19:18

percherie
Réponses : 8

Bonsoir,


Depuis plusieurs années je constate que les "Mises à jour non gérées" sont activées par défaut dans le gestionnaire de sources. Pourquoi est le cas ? Y a t'il une raison particulière ?

#9 Re : -1 »  Pourquoi les "Mises à jour non gérées" sont activé par défaut ? » Le 23/06/2014, à 20:40

percherie
Réponses : 8

Peut être est le cas uniquement avec les Live USB ? Est ce que d'autres personne on remarqué ce problème ?

#10 Re : -1 »  Pourquoi les "Mises à jour non gérées" sont activé par défaut ? » Le 24/06/2014, à 21:34

percherie
Réponses : 8

Je doit faire une manipulation non prévu lors de l'installation, j'ai remarqué ça très souvent à tel point que j'ai du prendre ce cas en compte sur un de mes scripts que j'utilise après installation.

Pourtant je suis l'installation graphique pas à pas mis à part le partitionnement défini à la mains.

#11 Re : -1 »  Pourquoi les "Mises à jour non gérées" sont activé par défaut ? » Le 25/06/2014, à 14:52

percherie
Réponses : 8
Fly0s a écrit :

D'ailleurs, j'ai jamais compris cette traduction... Comment "backports" est devenu cet incompréhensible "non gérées" ? On peut comprendre que le terme fasse peur aux gens en français...

C'est justement pour cela que je désactive systématiquement les backports en pensant que ça pourrait ajouter des problèmes. Pourtant je n'ai pas peur de mettre les mains de le cambouis mais pas à partir à l'aventure avec un poste utilisé quotidiennement.

Je vais réactivé cela et laisser l'option par défaut. Il doit y avoir un minimum de test si c'est actif par défaut maintenant.

Merci Malbo

#12 -1 »  Création HotSpot WiFi avec Ubuntu 14.04 incomplet » Le 17/06/2014, à 12:03

percherie
Réponses : 4

Bonjour,


Après avoir utilisé Mint pendant quelques temps où la création de HotSpot ce fait intuitivement j'essaie de reproduire le même exploit avec Ubuntu 14.04

J'ai suivi l'article suivant qui est bien documenté : http://www.clapico.com/2012/06/23/hotspot/

Lorsque le clic sur le bouton "Utiliser comme point d'accès..." rien ne ce passe et j'ai l'impression qu'une fenêtre s'affiche très très brièvement. Y a t'il un paquet à installer en complément ou est ce que je subit un bug de l'interface provoquant la fermeture de la boite de configuration ??

Merci par avance

#13 Re : -1 »  Création HotSpot WiFi avec Ubuntu 14.04 incomplet » Le 22/06/2014, à 19:24

percherie
Réponses : 4

Oui c'est ce que l'on appel un réseau Ad-Hoc si je ne fait pas d'erreur, à moins qu'il y ai eu du changement de ce coté là.

Je recherche la création d'un véritable HotSpot WiFi. Avec Mint cela fonctionne immédiatement c'est d'ailleurs l'unique raison que j'ai migré dessus il y a 2 ans mais j'espère que sur Ubuntu il y a eu du nouveau de ce coté là.

#14 Re : -1 »  Création HotSpot WiFi avec Ubuntu 14.04 incomplet » Le 23/06/2014, à 20:17

percherie
Réponses : 4

Je ne comprend pas, si je m'en tient à la documentation de hostapd la clé WiFi ne permet pas de créer de HotSpot Wifi alors que ça fonctionne parfaitement avec Linux Mint depuis 2 ans en 3 clics (je vous invite à vérifier et à apprécier).

Je pense y arriver, la doc est bien documenté mais je comptait installer Ubuntu chez plusieurs personne ne disposant pas de connaissance en informatique. Je leur ai souvent dis que taper des lignes de codes pour aller sur internet c'est fini mais ça me fait bien mentir hmm

Est ce que par chance il existe une interface graphique pour activer le partage de connexion vers un WiFi ?

#15 Re : -1 »  Picasa 3.9.0 dans wine : connexion à picasaweb impossible » Le 06/04/2014, à 22:27

percherie
Réponses : 38

Il doit avoir un moyen de voir les erreurs que wine rencontre. Peut être en exécutant la commande dans un terminal mais ce n'est qu'une piste à suivre... là j'en sais pas grand chose de plus.

#16 Re : -1 »  Picasa 3.9.0 dans wine : connexion à picasaweb impossible » Le 14/05/2014, à 23:04

percherie
Réponses : 38

Salut,


Si je me rappel bien c'est IE 8 qu'il faut utiliser mais mes souvenirs datent un peut. J'avais fait un script d'installation. Est ce que c'est celui ci que tu a utilisé ?

#17 -1 »  iconv ne semble pas convertir » Le 31/03/2014, à 22:23

percherie
Réponses : 5

Bonsoir,


J'ai créé des fichiers texte avec le bloc de note windows que je souhaite maintenant traiter avec mon poste Ubuntu. Mon script n'arrive pas à lire les fichiers sauf si je les convertis manuellement en UTF-8 avec Gedit.

J'ai tenté d'utiliser la commande iconv mais le poids du fichier de sortie est identique et le fichier est illisible avec Gedit, il semble y avoir un problème d'encodage.

Voici ce que j'ai tenté

iconv -f ISO-8859-1 -t UTF-8 source.txt > test.txt

#18 Re : -1 »  iconv ne semble pas convertir » Le 31/03/2014, à 23:18

percherie
Réponses : 5

Voici la fin du fichier source.txt

0120650: 2200 7500 6900 2d00 7200 6500 7300 6900  ".u.i.-.r.e.s.i.
0120660: 7a00 6100 6200 6c00 6500 2d00 6800 6100  z.a.b.l.e.-.h.a.
0120670: 6e00 6400 6c00 6500 2000 7500 6900 2d00  n.d.l.e. .u.i.-.
0120680: 7200 6500 7300 6900 7a00 6100 6200 6c00  r.e.s.i.z.a.b.l.
0120690: 6500 2d00 6e00 7700 2200 2000 7300 7400  e.-.n.w.". .s.t.
01206a0: 7900 6c00 6500 3d00 2200 7a00 2d00 6900  y.l.e.=.".z.-.i.
01206b0: 6e00 6400 6500 7800 3a00 2000 3900 3000  n.d.e.x.:. .9.0.
01206c0: 3b00 2200 3e00 3c00 2f00 6400 6900 7600  ;.".>.<./.d.i.v.
01206d0: 3e00 3c00 2f00 6400 6900 7600 3e00 3c00  >.<./.d.i.v.>.<.
01206e0: 2f00 6200 6f00 6400 7900 3e00            /.b.o.d.y.>.


Et là, la fin du fichier généré par la commande

iconv -f ISO-8859-1 -t UTF-8 source.txt > test.txt

01206a0: 7200 6500 7300 6900 7a00 6100 6200 6c00  r.e.s.i.z.a.b.l.
01206b0: 6500 2d00 6800 6100 6e00 6400 6c00 6500  e.-.h.a.n.d.l.e.
01206c0: 2000 7500 6900 2d00 7200 6500 7300 6900   .u.i.-.r.e.s.i.
01206d0: 7a00 6100 6200 6c00 6500 2d00 6e00 7700  z.a.b.l.e.-.n.w.
01206e0: 2200 2000 7300 7400 7900 6c00 6500 3d00  ". .s.t.y.l.e.=.
01206f0: 2200 7a00 2d00 6900 6e00 6400 6500 7800  ".z.-.i.n.d.e.x.
0120700: 3a00 2000 3900 3000 3b00 2200 3e00 3c00  :. .9.0.;.".>.<.
0120710: 2f00 6400 6900 7600 3e00 3c00 2f00 6400  /.d.i.v.>.<./.d.
0120720: 6900 7600 3e00 3c00 2f00 6200 6f00 6400  i.v.>.<./.b.o.d.
0120730: 7900 3e00                                y.>.

#19 Re : -1 »  iconv ne semble pas convertir » Le 02/04/2014, à 09:18

percherie
Réponses : 5

énorme, ça fonctionne, comment à tu trouvé le bon codage du fichier d'origine ?

#20 -1 »  Sed : nettoyer un fichier HTML » Le 28/12/2013, à 22:35

percherie
Réponses : 6

Bonsoir à tous, j'espère que vous passez de bonnes fêtes.


Je remet les doigts dans sed (pas seb, c'est pas propre) et comme à chaque fois je perd mono latin. Je cherche à nettoyer un fichier HTML que je génère régulièrement. J'utilise à chaque fois Gedit avec la fonction Rechercher/Remplacer mais si j'arrive à faire un script en shell ça peut bien aider.

Pour rechercher tous les caractères entre deux balise (texte, tabulation, espace, autres caractère) est ce que je doit tout spécifier caractère par caractère ou est ce qu'il existe une solution comme \w

Par exemple à partir de

- Capture AP:        1750" style="padding: 3px; vertical-align: top; cursor: help; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(11, 49, 78); color: white; background-color: rgb(1, 127, 1); text-align: right !important; white-space: nowrap;">2 911</td></tr><tr class="enl" style="color: rgb(3, 254, 3) !important;"><td style="padding: 3px; vertical-align: top; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(11, 49, 78); color: white; background-color: rgb(1, 127, 1); text-align: center; white-space: nowrap;">2</td><td class="portalTitle" style="padding: 3px; vertical-align: top; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(11, 49, 78); color: white; background-color: rgb(1, 127, 1); text-align: left; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; min-width: 120px !important; max-width: 240px !important;"><a title="

Je pensait commencer ma chaîne par -Capture AP, indiquer un truc qui permet de tout trouver et finir par <a title="

Sur Gedit ça donnerai : -Capture AP.*<a title="

Quel serait l'équivalent de .* (point et étoile) en sed ?

#21 Re : -1 »  Sed : nettoyer un fichier HTML » Le 29/12/2013, à 17:11

percherie
Réponses : 6

Merci,

-Capture AP.*<a title="

ne fonctionne pas mais

.*<a title="

fonctionne pourquoi ?? Que syntaxe n'ai je pas respecté ?

#22 Re : -1 »  Sed : nettoyer un fichier HTML » Le 29/12/2013, à 20:49

percherie
Réponses : 6

Hooo quel boulet... t'a l'oeil.

Dernière question si dans la chaîne

adaBafaBazaBcde

je souhaite supprimer tous ce qu'il y a jusqu'au premier B ? J'ai fait quelques essais mais ça me supprime tout jusqu'au dernier B.

J'utilise un code similaire à

sed -i 's/a.*B//' Test.txt

#23 Re : -1 »  Sed : nettoyer un fichier HTML » Le 29/12/2013, à 22:02

percherie
Réponses : 6

ça à l'air tellement simple en lisant la réponse.

Je suis parti sur une solution qui utilise les référence arrière. ça tombai pile poil pour réutiliser certains éléments

#24 Re : -1 »  Utiliser une chaine de caractère pour la commande touch » Le 19/11/2013, à 16:59

percherie
Réponses : 8

J'ai fait quelques essais avec jhead, exiftool et exiv2 et seul exiv2 arrive à définir une date quand aucune donnée EXIF existe. Ce qui donne depuis un fichier nommé IMG_20121017_143532 qui doit finir en 2012:10:17 14:35:32

find . -name '*.jpg' -exec bash -c 'exiv2 -M "set Exif.Image.DateTime $(sed -r "s/.*IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2})\.jpg/\1:\2:\3 \4:\5:\6/" <<< "$0")" "$0"' {} \;