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

  FORUM HardWare.fr
  Windows & Software
  Win 10

  Commandes DOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commandes DOS

n°3403584
xaramelaz
Posté le 09-07-2021 à 12:00:35  profilanswer
 

Bonjour
 
Ma question va vous paraître certainement "con" mais je n'arrive pas à trouver la solution.
 
J'ai un fichier de commandes SQL où je cherche à isoler parmi les milliers de lignes un ordre particulier.
J'utilise d'invite de commande DOS pour ce boulot.
 
J'ai isolé le numéro de ligne qui m'intéresse via la commande findstr.
=> Numéro de ligne de début 15278
J'ai besoin des 100 lignes suivantes.
 
Je souhaite me créer un 2ème fichier SQL avec uniquement les lignes 15278 à 15377 du 1er fichier.
 
J'ai l'utilitaire sed.exe bien positionné dans mon répertoire de travail.
 
 
J'ai trouvé comment créer un nouveau fichier sans ces lignes en utilisant l'option d de SED.
sed 15278,15377d  fichier1 >> fichier2
 
mais pas comment isoler ces lignes dans mon nouveau fichier (=garder uniquement la partie supprimée).
 
Il doit bien y avoir une option SED pour faire facilement cela.
 
La dernière chose tentée mais qui ne fonctionne pas.
sed -n 15278,15377r fichier1 >> fichier2
 
 
Merci d'avance pour votre aide.
 
 
 

mood
Publicité
Posté le 09-07-2021 à 12:00:35  profilanswer
 

n°3403593
Je@nb
Modérateur
Kindly give dime
Posté le 09-07-2021 à 12:43:15  profilanswer
 

sed -n 15278,15377p ?

n°3403594
Le Ouinhin​ Pervers
Posté le 09-07-2021 à 12:45:40  profilanswer
 

Bonjour,
 
Comme ceci avec sed :  

sed -n '15278,15377p;15377q' fichier1 >> fichier2


 
"-n <line1>,<line2>p" permet de ne garder que les lignes dans l'intervalle défini
"<line2>q" est une optimisation qui indique à sed de s'arrêter là et de ne pas continuer à lire le fichier; utile en cas de fichier lourd

n°3403595
xaramelaz
Posté le 09-07-2021 à 13:00:23  profilanswer
 

Merci à vous 2.
 
Ce qui marche :  
sed -n 15278,15377p;15377q fichier1 >> fichier2  
 
Très bonne idée de me proposer l'optimisation avec l'option q car je travaille effectivement sur de gros fichiers.

n°3403596
xaramelaz
Posté le 09-07-2021 à 13:13:32  profilanswer
 

Question bonus :
 
C'est possible de mentionner plusieurs intervalles en une seule ligne de commande ?
 
ex : je voudrais que mon fichier2 contiennent aussi les lignes 100 à 300 avant les lignes 15278 à 15377

n°3403597
Je@nb
Modérateur
Kindly give dime
Posté le 09-07-2021 à 13:19:54  profilanswer
 

sed -n 100,300p;15278,15377p;15377q fichier1 >> fichier2  

?

n°3403599
xaramelaz
Posté le 09-07-2021 à 13:28:19  profilanswer
 

Nickel
J'avais essayé mais ça avait planté car j'avais du faire une erreur


Message édité par xaramelaz le 09-07-2021 à 13:29:07
n°3403704
xaramelaz
Posté le 12-07-2021 à 10:52:58  profilanswer
 

Bonjour
 
Maintenant que j'ai bien isolé toutes les parties du code qui m'intéressaient dans des fichiers séparés, je veux faire des substitutions de texte.
 
Mes fichiers ont beaucoup diminué en volume (au moins divisé par 3) mais certains sont encore très gros.
 
Je cherche maintenant à remplacer certaines lignes commençant par "MOT" par des ; dans les fichiers source.
Je sais que mes lignes à remplacer sont forcément dans les 1000 premières lignes des fichiers.
 
Voici ce que j'ai essayé :
sed s/MOT.*/;/;1000q *.txt
 
J'ai seulement le résultat à l'écran. Le remplacement ne se fait pas dans chaque fichier source.
 
Auriez-vous une solution ?

n°3403706
Fork Bomb
Obsédé textuel
Posté le 12-07-2021 à 11:05:34  profilanswer
 

C’est pas "-i" pour le remplacement in place ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°3403709
xaramelaz
Posté le 12-07-2021 à 11:17:01  profilanswer
 

-i fonctionne bien pour le remplacement dans le fichier
 
Je ne peux cependant pas exploiter la notion de "1000 premières lignes".
sed -i s/MOT.*/;/;1000q *.txt  
 
Le nouveau fichier modifié ayant le nom de l'ancien ne contient alors que les 1000 premières lignes.

mood
Publicité
Posté le 12-07-2021 à 11:17:01  profilanswer
 

n°3403710
xaramelaz
Posté le 12-07-2021 à 11:19:09  profilanswer
 

Si je ne peux pas exploiter la notion de "n premières lignes", une autre piste pourrait être le nombre de changements à faire.
 
Je sais que ces remplacements sont à faire maximum 30 fois en fonction des fichiers.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win 10

  Commandes DOS

 

Sujets relatifs
Commandes "DOS" incompréhensiblesProblème de commandes DOS
DOS ne reconnait plus mes commandes !Gros probleme de commandes DOS
lancer des commandes en parallèle sous MS DOS ?Commandes sous DOS
Commandes DOSCommandes DOS
commandes DOSJ'ai besoin de commandes DOS pour réaliser un fichier .bat
Plus de sujets relatifs à : Commandes DOS


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