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 31/03/2008, à 14:04

klown

copier/coller assembler en ligne de commande

Bonjour,

je voudrais, à l'aide d'une commande, saisir un bloc de texte sur plusieurs lignes dans un fichier et l'injecter dans un autre fichier.
Je veux rendre cette tâche automatique, d'où la ligne de commande.
Je pensais que grep allait m'aider dans cette histoire mais visiblement cette commande ne me permet de récupérer qu'une ligne, ou ligne par ligne. J'ai besoin d'un paragraphe, soit en renseignant la première et la dernière ligne qui m'intéresse, soit la première et jusqu'à la fin du texte, toutes lignes confondues.

Quelqu'un a t-il une idée? Un nom de commande?


Merci à toutes les réponses utiles.

klown.

---------------------------------------------------------------------------------------------------------------
L'éternité c'est long; surtout vers la fin.

Dernière modification par klown (Le 31/03/2008, à 14:15)

Hors ligne

#2 Le 31/03/2008, à 14:32

Cheval-maxime

Re : copier/coller assembler en ligne de commande

Yep,
(Pour XXX ce que tu tape et File le fichier a editer)

Pour ecrire dans un fichier (rempalce le contenu) :
echo "XXX" > file

Pour ecrire a la fin du fichier (a la ligne, de la derniere ligne) :
echo "XXX" >> file

Pour afficher le contenu d'un fichier texte :
cat file

DONC :
Pour copier le contenu d'un fichier dans un autre (a la fin, dans ce cas) :
cat file >> file2

Pour copier le contenu (avec critere de recherche XXX) :
cat file|grep XXX >> file2


Despite ignorance, despite ridicule, despite opposition, truth happens
Luztic: communiquer simplement, open source inclus!

Hors ligne

#3 Le 31/03/2008, à 18:39

klown

Re : copier/coller assembler en ligne de commande

Oui, sauf que c'est un peu plus compliqué.
Je récupère un fichier en ligne avec wget. Ce fichier est régulièrement modifié de son côté.
Moi même je possède ce fichier et je le modifie, je prend soin de le modifier après une série de caractères reconnaissables, une sorte de balise que j'ai mit dedans et que je place en fin.
Quand je récupère celui en ligne je ne veux pas simplement l'injecter dans le mien. Je veux saisir toute la modif que j'ai faite dans ma version et l'injecter dans la nouvelle version récupérée en ligne. Et simplement la modif que j'ai faite. Puis écraser le fichier assemblé que je possède déja.
Tout ça doit se faire quand j'ouvre une appli pour qu'elle puisse l'utiliser.

donc si le premier fichier ressemble à ça :
------------------------------------
travail de marcel
------------------------------------
ligne1
ligne2
ligne2B
ligne2C
ligne3
ligne4

et le second à ça :
------------------------------------
travail de marcel
------------------------------------
ligne1
ligne2
ligne3
ligne4
------------------------------------
travail de simeon
------------------------------------
ligneperso1
ligneperso2
ligneperso3

Le fichier assemblé devrait ressembler à ça :
------------------------------------
travail de marcel
------------------------------------
ligne1
ligne2
ligne2B
ligne2C
ligne3
ligne4
------------------------------------
travail de simeon
------------------------------------
ligneperso1
ligneperso2
ligneperso3


avec grep je chope ligne par ligne, en tous cas j'ai l'impression, mais pas tout le bloc.
je voudrais dire :  prend, dans le second fichier, le travail de simeon du début à la fin et colle le, dans le premier fichier, à la suite du travail de marcel. Le tout forme un nouveau contenu de fichier 1. Celui ci vient remplacer le 2 puis est supprimé.
Mon appli se sert du 2 quand elle démarre.

En tous cas merci pour cette première réponse.

Hors ligne

#4 Le 31/03/2008, à 19:23

Orion Elenion

Re : copier/coller assembler en ligne de commande

Salut,

regarde peut-être du côté de diff et ses différents formats de sortie. Combiné à la réponse de Cheval-maxime, tu pourras peut-être avoir une première ébauche.


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#5 Le 31/03/2008, à 20:17

klown

Re : copier/coller assembler en ligne de commande

Quand j'utilise diff, je fais la comparaison avec mes deux fichiers mais ligne par ligne.
Donc si entre la ligne2 et la ligne3 une ligne vient se rajouter, comme par exemple ligne2B, mon fichier devient différent à partir de cette ligne. La ligne3 et les suivantes seront alors considérées comme différentes. Ce qui est faux.
C'est pourquoi je cherche comment récupérer tout un bloc, sans même chercher ce à savoir ce qu'il contient et si il a changé depuis la fois précédente, pour ensuite le remplacer dans son intégralité.

Hors ligne

#6 Le 06/04/2008, à 11:24

Orion Elenion

Re : copier/coller assembler en ligne de commande

Sauf erreur de ma part, diff est un peu plus évolué que ça et est capable de reconnaître l'insertion/la suppression d'une ligne. Après, je peux me tromper, car je ne l'utilise pas souvent.


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#7 Le 06/04/2008, à 18:57

kaworu

Re : copier/coller assembler en ligne de commande

Salut !
Essaye d'utiliser sed, c'est ce qui me semble le plus adapté. Si tu manque de puissance essaye awk, puis (dans le pire des cas hein) perl.

Bonne continuation.


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#8 Le 06/04/2008, à 23:09

klown

Re : copier/coller assembler en ligne de commande

Bien oui, j'ai bien regardé de ce côté là et celà semble très complet.
Cependant, malgrès man et les expressions régulières, je ne comprend pas comment je récupère un ensemble de ligne dont je ne connais pas le contenu. Je peux "baliser" (ce que j'ai fait, comme dans l'exemple plus haut) le début de la zone de texte afin qu'elle soit reconnaissable et saisissable à partir de ce point. Mais comment lui indiquer de ne pas s'arreter là, d'aller jusqu'à la fin du fichier, ou bien jusqu'à une autre "balise"?

En fait si j'arrive à faire ça tout va bien puisque n'importe qu'elle autre commande sitée ici peut me permettre de coller ma saisie à la suite d'un autre fichier.

Hors ligne