Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
858 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Scripts

n°1459218
devapp
Dev app
Posté le 10-01-2021 à 09:29:56  profilanswer
 

bonjour,
j'espère que tu va bien§
Merci pour m'aider a résoudre le problème
s'il y a quelqu'un qui peut m'aider me données un solution KORN shell
exemple:
fichier.txt
Dev app 2121= //linge valide
dev
app 1542= //deux ligne non valide
Dev app 2323
...
 
c-a-d que mon fichier n'est pas organiser et la sortie doit etre un fichier.txt organiser
Dev app 1111=
Dev sss 2222=
Dev vvv 2525=
.
.
.
.
Dev ggg 5656=
 
 
 
Cordialement

mood
Publicité
Posté le 10-01-2021 à 09:29:56  profilanswer
 

n°1459220
rat de com​bat
attention rongeur méchant!
Posté le 10-01-2021 à 10:26:45  profilanswer
 

C'est pas très clair, merci de donner des exemples plus précis. De manière générale regarde sed, awk, cut et ces outils là. Ou alors tu t'embêtes pas et tu prends du Perl ou Python ou ... qui doit être installé sur toute machine Linux.

n°1459231
kajoux
Posté le 10-01-2021 à 14:05:11  profilanswer
 

Code :
  1. sort -k3n fichier.txt

n°1459262
devapp
Dev app
Posté le 11-01-2021 à 08:07:21  profilanswer
 

Merci pour votre réponse
ex: j'ai un fichier texte  qui contient des ligne mais de façon non organiser  
fich.txt
dev informatique 1245=
dev  
app 1222=
dev for  
5554=
dev mou 5542=
.
.
.
.
Cad il faut organiser mon fichier la fin de ligne = et début de la ligne dev  
fic.txt organiser  
dev informatique 1245=
dev app 1222=
dev for  5554=
dev mou 5542=
 
cordialement

n°1459264
o'gure
Modérateur
Multi grognon de B_L
Posté le 11-01-2021 à 09:17:29  profilanswer
 

Devapp: Pourquoi créer une alerte à la modération ?


---------------
Relax. Take a deep breath !
n°1459288
kajoux
Posté le 11-01-2021 à 14:46:55  profilanswer
 

Ah ok, rat de combat a bien fait de demander des explications alors…
Donc ce serait un truc comme ça avec sed :

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\n//g}' fichier.txt


Après, selon comment le fichier est (plus ou moins bien) fichu, il faudra peut-être adapter, par exemple en remplaçant les \n par une espace au lieu de les remplacer par rien comme j'ai fait là.
Par exemple, pour normaliser tu peux faire ça :

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt


Et ensuite, si jamais tu veux trier selon la troisième colonne numériquement, tu peux rajouter ce que j'ai dit avant  :D  

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt | sort -k3n

Message cité 1 fois
Message édité par kajoux le 11-01-2021 à 14:51:46
n°1459303
rat de com​bat
attention rongeur méchant!
Posté le 11-01-2021 à 20:38:06  profilanswer
 

Joli. :jap: Je ne tente même pas de comprendre. :lol: Perso je prends du Perl directement plutôt que de me faire ch... Merci pour cette commande sort, ça ça pourrait être bien utile.

 

Bon, en fait je voulais dire:
@devapp
Tu veux bien mettre un titre un peu plus parlant au sujet?


Message édité par rat de combat le 11-01-2021 à 20:38:46

---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
n°1459318
kajoux
Posté le 12-01-2021 à 02:37:51  profilanswer
 

Autre méthode plus bourrine mais plus simple et lisible :

sed -z 's/\n//g; s/=/=\n/g' fichier.txt


Ça ne marche qu'avec GNU sed par contre, à cause du -z.

n°1459325
kisscoolz
Posté le 12-01-2021 à 10:15:51  profilanswer
 

kajoux a écrit :

Ah ok, rat de combat a bien fait de demander des explications alors…
Donc ce serait un truc comme ça avec sed :

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\n//g}' fichier.txt


Après, selon comment le fichier est (plus ou moins bien) fichu, il faudra peut-être adapter, par exemple en remplaçant les \n par une espace au lieu de les remplacer par rien comme j'ai fait là.
Par exemple, pour normaliser tu peux faire ça :

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt


Et ensuite, si jamais tu veux trier selon la troisième colonne numériquement, tu peux rajouter ce que j'ai dit avant  :D  

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt | sort -k3n



 
Oh pinaise les souvenirs que ca fait remonter  :love:  
 

Spoiler :

Par contre t'as perdu 99,99% de l'auditoire potentiel  :lol:


---------------
http://lacabanedeladmin.trickip.net/
n°1459331
kajoux
Posté le 12-01-2021 à 11:02:54  profilanswer
 

Si ça fait plaisir à quelques-uns c'est déjà bien  ;)

mood
Publicité
Posté le 12-01-2021 à 11:02:54  profilanswer
 

n°1459355
devapp
Dev app
Posté le 12-01-2021 à 15:16:00  profilanswer
 

ça marche très bien
merci pour votre réponse  
svp vous pouvez m'explique la dernière étape par Etape  
 
 sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt | sort -k3n
 
 
cordialement


Message édité par devapp le 13-01-2021 à 08:14:51
n°1459362
kajoux
Posté le 12-01-2021 à 16:47:42  profilanswer
 

Si tu veux pas trier le fichier, tu enlèves simplement la commande sort à la fin, pour ne garder que

sed '/^dev/{:l; /=\s*$/!{N; b l}; s/\s*\n\s*/ /g}' fichier.txt


Cette commande est une commande sed, qui s'applique à fichier.txt, et dont le programme signifie :

  • /^dev/{ : si une ligne commence par dev, alors…
  • :l; /=\s*$/!{ : tant qu'on ne rencontre pas une ligne qui se termine par = (avec éventuellement des espaces en fin de ligne), alors…
  • N; b l}; : on agrège la ligne courante à la précédente, on passe à la suivante et on revient au point 2.
  • s/\s*\n\s*/ /g} : on remplace les sauts de ligne (éventuellement précédés et succédés par des espaces) par une seule espace dans le bloc construit aux points 1 et 2, puis on passe à la ligne suivante, en revenant au point 1.

n°1459383
devapp
Dev app
Posté le 13-01-2021 à 08:17:24  profilanswer
 

Bonjour;
merci pour votre réponse tu es vraiment très gentil  
 
cordialement.

n°1459453
devapp
Dev app
Posté le 13-01-2021 à 20:38:01  profilanswer
 

Bonsoir  
kajoux  
svp comment supprimer les ligne qui contient une chaîne  
 
200
ou d'extraire les ligne qui contient 200 et le sauvegarde dans un autre fichier  
 j'essaye avec  
 
sed '/200/d' mon_fichier.txt    
mais pour extraire je ne sait pas  
 
cordialement


Message édité par devapp le 13-01-2021 à 20:46:24
n°1459458
kajoux
Posté le 13-01-2021 à 21:03:32  profilanswer
 

sed -n '/200/p' mon_fichier.txt


Mais bon, dans ce cas simple, tu peux te contenter de faire

grep '200' mon_fichier.txt


Quelle que soit la commande utilisée, pour rediriger ensuite la sortie dans fichier_cible.txt, tu rajoutes

> fichier_cible.txt


à la fin.

n°1459475
devapp
Dev app
Posté le 14-01-2021 à 13:26:41  profilanswer
 

Merci c'est très gentil
et pour télécharger des fichier.txt dans un site web après que tu rempli le from  
 
cordialement

n°1459476
kajoux
Posté le 14-01-2021 à 13:35:34  profilanswer
 

Là on change de sujet, donc il faut que tu ouvres une nouvelle question, en choisissant un meilleur titre cette fois-ci, comme il t'a été demandé plus haut.

n°1459478
devapp
Dev app
Posté le 14-01-2021 à 13:50:49  profilanswer
 

Merci

n°1459497
devapp
Dev app
Posté le 14-01-2021 à 22:45:18  profilanswer
 

bonsoir  
voila le lien de sujet merci
https://forum.hardware.fr/hfr/OSAlt [...] 6825_1.htm
cordialement;
 

kajoux a écrit :

Là on change de sujet, donc il faut que tu ouvres une nouvelle question, en choisissant un meilleur titre cette fois-ci, comme il t'a été demandé plus haut.


Message édité par devapp le 15-01-2021 à 21:12:32

---------------
Cordialement

Aller à :
Ajouter une réponse
 

Sujets relatifs
Aide correction scripts fonction choixscripts batch sous synology
Scripts maintenance d'un serveur[DEBIAN] faire une iso d'install perso avec scripts
modification et scripts non sauvegardésMonitorer le temps d'exécution de scripts php
Scripts CGIscripts shell
Script bash : exécution de plusieurs scriptsNettoyage des scripts inutilisés dans rcX.d ?
Plus de sujets relatifs à : Scripts


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR