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 17/01/2011, à 01:48

ridfa

Manipulation de fichier texte [Résolu]

Bonjour,

Complètement désespéré, j'espère trouver un peu de lumière ici big_smile
J'ai réfléchi à mille manière d'exposer mon "bug" cérébral mais un exemple sera plus éloquent (j'espère).

Je manipule plusieurs fichiers texte se trouvant tous dans un même dossier.
Le contenu de ces fichiers ressemble au cas fictif qui suit:

Page 1 : http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierXXXX
Page 2 : http://uneadressequelconque/undossier/fichierYYYY
lien 02 : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierZZZZ
lien 03 : http://uneadressequelconque/undossier/fichierZZZZ

Donc plusieurs lignes qui reprennent toujours une url avec une partie commune à toutes et une fin différente
Je cherche à "extraire" l'url ou "effectuer une recherche de chaine de caractères" sur l'url (mots-clés google sad )
En français, je voudrais de manière automatique parcourir l'ensemble du fichier afin de relever les url qui y sont présentes et les injecter dans un nouveau fichier.
Obtenir ceci :
http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierZZZZ


ma question est la suivante est-il possible en commande shell (je pensais à sed) de réaliser ceci?
Détail supplémentaire, dans certains fichier apparaissent des lignes vides, j'ai compris comment les supprimer grace à sed
quand les url "démarrent" toutes à la même position aussi, pour supprimer le début de la ligne c'est OK.
mais lui dire cherche dans la ligne ce qui commence par http://uneadressequelconque/undossier/fichier ainsi que les n caracteres suivants, je suis largué et ça fait un bail que je cherche mais en vain au vu de mes faibles connaissances en la matière

J'espère ne pas avoir été trop fouilli, ça m'a fatigué parce que tant que je ferais semi-manuel ca va être  souffrance tongue

D'avance merci, ne serait-ce que pour avoir lu jusqu'ici

Dernière modification par ridfa (Le 25/02/2011, à 13:36)

Hors ligne

#2 Le 17/01/2011, à 01:51

kalisto07

Re : Manipulation de fichier texte [Résolu]

bonjour
notepad++ permet de surligner dans le fichier texte les mots renseigné dans le champ de recherche
c'est un tres bon programme qui, au cas ou il n'existe pas pour linux doit pouvoir tourner avec wine ou avoir un equivalent linux

Hors ligne

#3 Le 17/01/2011, à 01:55

ridfa

Re : Manipulation de fichier texte [Résolu]

Salut,

ridfa a écrit :

"...je voudrais de manière automatique parcourir l'ensemble du fichier afin de relever les url qui y sont présentes et les injecter dans un nouveau fichier."
"cherche dans la ligne ce qui commence par http://uneadressequelconque/undossier/fichier ainsi que les n caracteres suivants"

Merci de cette information mais elle ne permet pas de réaliser ce que je cherche à faire sinon quelle est ton idée?

Hors ligne

#4 Le 17/01/2011, à 02:02

kalisto07

Re : Manipulation de fichier texte [Résolu]

en rentrant la racine commune de ton url dans le champs rechercher cela va surligner toutes les adresses url
apres pour injecter automatiquement toute ces adresses dans un autre fichier je ne sais pas si c'est possible mais je pense que ce programme a plus d'un tour dans son sac

Hors ligne

#5 Le 17/01/2011, à 02:05

ridfa

Re : Manipulation de fichier texte [Résolu]

Je pense que tu ne cerne pas la problématique dans son ensemble.
Comment puis-je demander à Notepad++ de prendre en compte les n caractères de fin d'url qui sont différents de ligne en ligne?

Hors ligne

#6 Le 17/01/2011, à 02:07

pge

Re : Manipulation de fichier texte [Résolu]

cat 'ton_fichier' | cut -d " " -f4 | sed '1~2d' > extraction.txt

- lis le fichier
- garde la partie après le 4ème espace
- conserve une ligne/2
- envoie le résultat dans le fichier texte "extraction"...

Hors ligne

#7 Le 17/01/2011, à 02:12

ridfa

Re : Manipulation de fichier texte [Résolu]

Salut pge,

Ce que tu me proposes est sympa mais c'est à peu près ce que je fais déjà.
En plus l'url peut se trouver en 5 colonne ou 6ème dans un même fichier ce qui m'oblige en fait à balayer plusieurs fois le fichier pour épuiser toutes les possibilités.

Il faudrait vraiment que cela se fasse en une fois (pas forcément une ligne) et automatiquement, quelle que soit la position de l'url ou sa fin.

Merci à toi wink

Hors ligne

#8 Le 17/01/2011, à 03:15

pge

Re : Manipulation de fichier texte [Résolu]

sed 's/http/***http/g' 'ton_fichier' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sed '1~2d' > extraction.txt 

Pas beau mais ça marche...
-remplace tous les "http" par "***http"
- ne garde que les lignes contenant "http"
- affiche le bloc après le séparateur "***"... hmm
- conserve une ligne/2
- ... et envoie le résultat dans le fichier texte "extraction"...

Dernière modification par pge (Le 17/01/2011, à 03:17)

Hors ligne

#9 Le 17/01/2011, à 04:30

Hizoka

Re : Manipulation de fichier texte [Résolu]

tu as :

Page 1 : http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierXXXX
Page 2 : http://uneadressequelconque/undossier/fichierYYYY
lien 02 : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierZZZZ
lien 03 : http://uneadressequelconque/undossier/fichierZZZZ

et tu veux :

http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierZZZZ

c'est ça ?

si oui alors pourquoi pas simplement :

sed -n '/^Page/ s/.* : //p'

Recherche les lignes commençant par Page
Supprime tout jusqu'à " : "
Affiche le résultat de la commande

sed -n '/^Page/ s/.* : //p' > nouvelle_liste.txt

si tu veux envoyer dans un fichier...

mais au vu de ce qui est proposé, je n'ai peut être pas tout pigé...
sinon donne plusieurs exemple de contenu de fichier texte a traiter...

Dernière modification par Hizoka (Le 17/01/2011, à 04:32)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#10 Le 17/01/2011, à 17:37

ridfa

Re : Manipulation de fichier texte [Résolu]

pge a écrit :
sed 's/http/***http/g' 'ton_fichier' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sed '1~2d' > extraction.txt 

Pas beau mais ça marche...
-remplace tous les "http" par "***http"
- ne garde que les lignes contenant "http"
- affiche le bloc après le séparateur "***"... hmm
- conserve une ligne/2
- ... et envoie le résultat dans le fichier texte "extraction"...

Salut Pge smile

Merci de ta proposition c'est vrai ça marche !

Il y a un point sur lequel je voudrais revenir, il s'agit de la fin de la ligne de code

...| sed '1~2d' > extraction.txt 

Cela supprime systématiquement 1ligne sur 2 mais le but visé serait de supprimer les lignes vides (qui peuvent se suivre dans certains cas) pour ce faire j'utilise le code suivant

sed -i '/^$/d' fichier.txt > extraction.txt

J'ai voulu intégrer cette commande à la ligne que tu proposes en remplaçant donc la partie concernée ce qui donne

sed 's/http/***http/g' 'fichier.txt' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sed -i '/^$/d' > extraction.txt

si j'ai bien compris mais je crois ne pas avoir compris car j'obtiens un fichier vierge sad

@Hizoka
Salut à toi et merci de ton aide,

Ta ligne est "ultra" intéressante big_smile (y' a qu'une ligne de code) géant!
Mais si je comprends bien tu sélectionnes ainsi tous les fichiers présents dans le répertoire courant.
Si je veux préciser un fichier en particulier cela donnerait...?

sed -n '/^http/ s/fichier.txt : //p' > nouvelle_liste.txt

Ben non!
Dans ce cas, le prompt ne me rend pas la main et j'obtiens un fichier vierge en stoppant la commande

Sinon vraiment merci de l'intérêt que vous portez à mon problème cool:/

Hors ligne

#11 Le 17/01/2011, à 18:49

Levi59

Re : Manipulation de fichier texte [Résolu]

Full bash... Vérifier le motif pour les fichiers avec des adresses comme tu n'as rien dit à ce sujet...

#!/bin/bash

rm -f newlist.txt
for file in *.txt    #trouver un motif communs aux fichiers avec les adresses
do
cat "$file" > >(
  while { read url; }
  do
      [[ ${url} == Page* ]] && printf "%s\n" "${url#* : }" >> newlist.txt
  done
)
done

Hors ligne

#12 Le 17/01/2011, à 18:53

pge

Re : Manipulation de fichier texte [Résolu]

Il y a un point sur lequel je voudrais revenir, il s'agit de la fin de la ligne de code

...| sed '1~2d' > extraction.txt 

Cela supprime systématiquement 1ligne sur 2 mais le but visé serait de supprimer les lignes vides (qui peuvent se suivre dans certains cas)

grep http

sélectionne les lignes qui contiennent "http" et donc élimine déjà les lignes vides...

sed '1~2d'

ne sert qu'à supprimer 1 ligne / 2 pour éliminer les doublons de ton exemple ("page 2 :" et "lien 02 :" avec une même adresse...)
Un autre solution pour supprimer les doublons s'ils ne sont pas régulièrement répartis 1 ligne / 2 dans ton fichier :
après avoir extrait toutes les URL, les classer (commande "sort") avant d'éliminer les doublons avec un "sed" ésotérique...;)
Ce qui donne :

sed 's/http/***http/g' 'ton_fichier' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sort | sed '$!N; /^\(.*\)\n\1$/!P; D' > extraction.txt

Il y a certainement moyen de faire plus efficace, plus propre, plus élégant, etc... mais ce n'est pas à ma portée...

J'ai voulu intégrer cette commande à la ligne que tu proposes en remplaçant donc la partie concernée ce qui donne

sed 's/http/***http/g' 'fichier.txt' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sed -i '/^$/d' > extraction.txt

si j'ai bien compris mais je crois ne pas avoir compris car j'obtiens un fichier vierge sad

C'est dû à l'option -i ... (voir man sed...). Sans le -i, extraction.txt est bien généré mais la commande ne sert à rien puisque les lignes vides ont déjà été éliminées par "grep http"...

Hors ligne

#13 Le 17/01/2011, à 20:32

ehmicky

Re : Manipulation de fichier texte [Résolu]

Je suis pas sûr d'avoir tout saisi de ce que tu veux, mais si tu veux supprimer les lignes vides, doublons et ne garder que les lignes commençant par "Page", et ne garder que l'URL (pour tous les fichiers .txt du répertoire courant) :

sed -n '/^Page/ s/.*\(http\)/\1/p' *.txt | sort | uniq

ou pour reprendre le code de Levi en presque full-bash, mais en rajoutant le fait d'enlever les doublons :

#!/bin/bash
a=
for file in *.txt
do
    while read
    do
        [[ $REPLY =~ ^Page ]]\
           && [[ ! $a =~ ${REPLY#*: } ]]\
           && a+="${REPLY#*: }"$'\n'
    done <"$file"
done
printf "$a" > newlist.txt

Edit : modif smile
Edit2: modif pour du full-bash, deux fois plus rapide que la solution avec le sed, mais bon c'est peut-être pas ta priorité big_smile

Dernière modification par ehmicky (Le 17/01/2011, à 20:57)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#14 Le 17/01/2011, à 20:58

Levi59

Re : Manipulation de fichier texte [Résolu]

Normalement mon code ne créé pas de doublon sauf si le shéma de base n'est pas inconditionnel (du coups une petite vérif peut s'imposer en effet)...
Et dans le premier post, notre ami disait, je cite : "plusieurs fichiers texte se trouvant tous dans un même dossier" d'où la boucle for mais si il y a plus simple.

Par contre j'aime l'utilisation de sort qui évite le rm! Je note! ^^

Edit tu modifies tes exemples trop vite ehmicky! ^^
Bon je regarde et je modifie...

Edit²:
Tu es sûr de la synthaxe de ton script? Il me semble pourtant que les "\n" ne sont pas stockés dans les listes... J'aurais plutot mis

&& a+="${REPLY#*: }"
et
printf "%s\n" "$liste"

Dernière modification par Levi59 (Le 17/01/2011, à 21:04)

Hors ligne

#15 Le 17/01/2011, à 21:00

ehmicky

Re : Manipulation de fichier texte [Résolu]

Non, c'est pas une array, mais sinon ça marche aussi avec une array, en mettant a=( ) à la place de a= et printf "${a[@]}" à la fin, d'ailleurs c'est ce que j'ai fait au début big_smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#16 Le 17/01/2011, à 21:03

Levi59

Re : Manipulation de fichier texte [Résolu]

Ah oui! Ok je croyais qu'il y avais une erreur et c'est moi qui en fait une!
Merci de cette précision.

Hors ligne

#17 Le 18/01/2011, à 07:44

Hizoka

Re : Manipulation de fichier texte [Résolu]

Non je te demandais de poster un autre exemple de ce que contient l'un de tes fichiers...

sed -n '/^Page/ s/.* : //p' ta_liste.txt > nouvelle_liste.txt

il recherche les lignes commençant par Page (ce qui est le cas dans ton exemple de base) du fichier ta_liste.txt, sur ces lignes, il efface tout jusqu'à " : " et t'affiche le résultat.
et avec "> nouvelle_liste.txt" il renvoie le résultat directement dans un fichier nommé nouvelle_liste.txt

si tu veux traiter tout d'un coup :

sed -n '/^Page/ s/.* : //p' *.txt > nouvelle_liste.txt

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#18 Le 18/01/2011, à 08:21

ridfa

Re : Manipulation de fichier texte [Résolu]

Salut @ tous,

@hizoka

Très rapidement j'ai testé le script bash mais il faut prendre en compte que ( et je n'ai pas relu mes posts) le terme Page a été pris en exemple par un ubunteros (je crois mais faut vérifier) mais ce terme ne m'intéresse pas dans ma recherche.
Il faut que je puisse récupérer les url uniquement donc effacer tout jusqu'à http et conserver tout ce qui suit sur la ligne.
Cette ligne de code fonctionne à merveille :

sed 's/http/***http/g' 'ton_fichier' | grep http | awk 'BEGIN{FS="***"} {print $2}' | sort | sed '$!N; /^\(.*\)\n\1$/!P; D' > extraction.txt

Thanks pge
Même si aujourd'hui je ne comprends pas la moitié de son travail, et c'est vrai que

Il y a certainement moyen de faire plus efficace, plus propre, plus élégant, etc...

mais pour moi ça marche et c'est tout ce qui compte (parallèlement un bon moyen pour moi d'en apprendre un peu plus, comme rendre ceci interactif!... Oh là du calme on ne s'emballe pas tongue )


@ehmicky et Levi

Merci de votre implication à m'aider à sortir du noir, tout d'abord.
J'ai essayé la version "optimisé" du full bash mais j'obtiens un fichier vierge. Comme je le disais précedemment je ne cherche pas à conserver le mot "Page" juste les url et qui en plus commence par une certaine syntaxe (pour être plus complet mais c'est une option).
Si je reprend le code proposé et que je veuille l'adapter à mon cas cela donnerait :

#!/bin/bash
a=
for file in *.txt
do
    while read
    do
        [[ $REPLY =~ ^http ]]\
           && [[ ! $a =~ ${REPLY#*: } ]]\
           && a+="${REPLY#*: }"$'\n'
    done <"$file"
done
printf "$a" > newlist.txt

Le changement est à la 7e ligne http au lieu de Page
Ben faut croire que non car re-fichier vide hmm

En fait si on reprend l'exemple de départ (modifié pour l'explication) cela donne

Page 1 : http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierAABBCC
Page 2 : http://uneadressequelconque/undossier/fichierYYYY
lien 02 : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierBBAADD
lien 03 : http://uneadressequelconque/undossier/fichierABCDEF

Toutes les infos avant "http://" ne m'intéressent pas car des fois j'ai :

**@rt http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierAABBCC
Page 1 : http://uneadressequelconque/undossier/fichierYYYY
lien __ et : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierBBAADD
lien 03 : http://uneadressequelconque/undossier/fichierABCDEF

et je voudrais obtenir

http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierAABBCC
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierBBAADD
http://uneadressequelconque/undossier/fichierABCDEF

Le plus important c'est de balayer le fichier et dès qu'il rencontre la chaine de caractère précisée en entrée, copier dans un nouveau fichier tout le reste de la ligne (donc sans le début et avec le http) pour obtenir un fichier recensant uniquement les url (qui pour infos doivent ensuite subir un test d'accessibilité)

Les réponses (à mon goût) ont été plus que je en peux encaisser big_smile je continue à lire vos réponses car il y a beaucoup d'infos mine de rien
Encore une fois merci les ubunteros "script-maker" cool;)

Dernière modification par ridfa (Le 18/01/2011, à 08:24)

Hors ligne

#19 Le 18/01/2011, à 09:22

ehmicky

Re : Manipulation de fichier texte [Résolu]

Salut,

$ cat contenu
**@rt http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierAABBCC
Page 1 : http://uneadressequelconque/undossier/fichierYYYY
lien __ et : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierBBAADD
lien 03 : http://uneadressequelconque/undossier/fichierABCDEF

$ cat script.sh
#!/bin/bash 
a=
while read
do
    [[ $REPLY =~ http ]]\
       && [[ ! $a =~ ${REPLY#*http} ]]\
       && a+="${REPLY/#*http/http}"$'\n'
done <"$1"
printf "$a"

$ ./script.sh contenu 
http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierAABBCC
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierBBAADD
http://uneadressequelconque/undossier/fichierABCDEF

ou :

$ <contenu sed -n '/http/ s/.*\(http\)/\1/p' | sort | uniq
http://uneadressequelconque/undossier/fichierAABBCC
http://uneadressequelconque/undossier/fichierABCDEF
http://uneadressequelconque/undossier/fichierBBAADD
http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY

Dernière modification par ehmicky (Le 18/01/2011, à 09:27)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#20 Le 18/01/2011, à 10:47

Hizoka

Re : Manipulation de fichier texte [Résolu]

ridfa a écrit :

Je manipule plusieurs fichiers texte se trouvant tous dans un même dossier.
Le contenu de ces fichiers ressemble au cas fictif qui suit:

Page 1 : http://uneadressequelconque/undossier/fichierXXXX
lien 01 : http://uneadressequelconque/undossier/fichierXXXX
Page 2 : http://uneadressequelconque/undossier/fichierYYYY
lien 02 : http://uneadressequelconque/undossier/fichierYYYY
Page 3 : http://uneadressequelconque/undossier/fichierZZZZ
lien 03 : http://uneadressequelconque/undossier/fichierZZZZ

En français, je voudrais de manière automatique parcourir l'ensemble du fichier afin de relever les url qui y sont présentes et les injecter dans un nouveau fichier.
Obtenir ceci :
http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierZZZZ

c'est que fait ma ligne de code, d'ou mes demandes que tu postes des exemples de contenu de tes fichiers afin de savoir si Page était toujours là...

sinon :

sed -n '/http:\/\// s@.*http://@http://@p' fichier | sort | uniq

en concret :

cat a
Page 1 : http://uneadressequelconque/undossier/fichierXXXX
liehgf hgn 01 : http://uneadressequelconque/undossier/fichierXXXX
Page 2 : http://uneadressequelconque/undossier/fichierYYYY
lh gf hien 02 : http://uneadressequelconque/undossier/fichierYYYY
Pagfg hgf he 3 :h gf hgf http://uneadressequelconque/undossier/fichierZZZZ
lieh fg n 03 :hfgh gf http://uneadressequelconque/undossier/fichierZZZZ
sed -n '/http:\/\// s@.*http://@http://@p' a | sort | uniq
http://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierZZZZ

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#21 Le 18/01/2011, à 11:16

Totor

Re : Manipulation de fichier texte [Résolu]

Salut,

@ehmicky : l'utilisation des regex est inutile et couteux.

#!/bin/bash 
a=
while read
do
    [[ $REPLY == *http* ]]\
       && [[ ! $a == *${REPLY#*http}* ]]\
       && a+="${REPLY/#*http/http}"$'\n'
done <"$1"
printf "$a"

Sinon, pour le fun :

# solution valable si bash >=4)
declare -A a
while read
do
 [[ ${REPLY} == *http://* ]] && a["${REPLY#*http://}"]=1
done < fichier
printf "http://%s\n" "${!a[@]}"

Dernière modification par Totor (Le 18/01/2011, à 11:16)


-- Lucid Lynx --

Hors ligne

#22 Le 18/01/2011, à 17:39

ridfa

Re : Manipulation de fichier texte [Résolu]

cool Salut,

@Hizoka
je confirme, cette commande

sed -n '/http:\/\// s@.*http://@http://@p' fichier | sort | uniq

me permet d'aboutir au résultat escompté (je vais torcher le boulot à la vitesse V) cool
J'ai même compris comment preciser la recherche sur des urls spécifiques ( à mon niveau c'est énorme ! lol )

@ehmicky et Totor
Les scripts fonctionnent à merveille aussi même si j'ai mis du temps à piger que je devais mettre mon nom de fichier après le a= (pas si longtemps que ça mais pas tout de suite quand même hmm ) ça vous donne une idée du niveau. Mais cela me permet de me fixer des objectifs d'apprentissage comme dire au script de demander à l'utilisateur de saisir le nom de fichier au lancement big_smile.

Bref,
A ce stade je considère que j'ai la réponse à ma question, le flux de réponses me laisse espérer aller bien plus loin que ce que je pensais en travaillant vos propositions,donc.
Mais ceci ne légitime peut-être pas de maintenir le topic ouvert juste pour pouvoir aller plus loin...

Merci à tous de votre énorme coup de pouce

Hors ligne

#23 Le 18/01/2011, à 23:14

Totor

Re : Manipulation de fichier texte [Résolu]

ridfa a écrit :

@ehmicky et Totor
Les scripts fonctionnent à merveille aussi même si j'ai mis du temps à piger que je devais mettre mon nom de fichier après le a=

Ah non, il faut laisser tel quel !!!

Dans le scipt d'ehmicky, il faut passer le nom du fichier en 1er paramètre du script. Quand au mien, il faut changer fichier par le nom de ton fichier ou faire comme dans le script d'ehmicky. i.e mettre "$1" pour aboutir à son principe


-- Lucid Lynx --

Hors ligne

#24 Le 19/01/2011, à 18:36

ridfa

Re : Manipulation de fichier texte [Résolu]

Salut Totor
Voilà comment le script après une toute petite touche perso

echo -n 'Quel est le nom du fichier ?'
read fichier
echo -n 'Nom de fichier final ?'
read ffichier
while read
do
    [[ $REPLY == *http://192.168.1.1* ]]\
       && [[ ! $fichier == *${REPLY#*http://192.168.1.1}* ]]\
       && fichier+="${REPLY/#*http/http}"$'\n'
done <"$fichier"
printf "$fichier" > $ffichier.txt

Je voudrais pouvoir lui demander de choisir tel ou tel fichier ainsi que définir le nom de fichier en sortie après nettoyage.
Du coup ca marche pas super je me retrouve avec le nom de fichier en début de la 1ere ligne :

fichier.txthttp://uneadressequelconque/undossier/fichierXXXX
http://uneadressequelconque/undossier/fichierYYYY
http://uneadressequelconque/undossier/fichierZZZZ

C'est bête hmm

edit : C'est bien ton script que j'utilse en fait Totor lol Faut que j'ouvre mieux les yeux roll
Merci de ton aide

Dernière modification par ridfa (Le 19/01/2011, à 18:40)

Hors ligne

#25 Le 19/01/2011, à 22:18

ehmicky

Re : Manipulation de fichier texte [Résolu]

Comme ça, tu n'auras pas le nom fu fichier au début : smile

read -p 'Quel est le nom du fichier ?' fichier
read -p 'Nom de fichier final ?' ffichier
a=
while read
do
    [[ $REPLY == *http://192.168.1.1* ]]\
       && [[ $a != *${REPLY#*http://192.168.1.1}* ]]\
       && a+="${REPLY/#*http/http}"$'\n'
done <"$fichier"
printf "$a" > $ffichier.txt

Dernière modification par ehmicky (Le 19/01/2011, à 22:19)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne