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) *** mise à jour 12/10/2014 ***

#1 Le 22/09/2009, à 19:57

Ferod

Ajouter un caractère au début de certaines lignes

Bonjour

Au boulot je travail sur un modèle élément fini. Ca se présente sous un fichier de plusieurs milliers de lignes. De ce fichier, je voudrais commenter certaines lignes pour supprimer des choses en trop. Il faudrait que j'ajoute un $ au début de la ligne.
J'ai un moyen simple d'écrire le fichier des éléments que je veux supprimer avec un autre logiciel. Donc je me retrouve avec deux fichiers : l'un, A, contenant le modèle en entier ; l'autre, B, avec les lignes de ce que je veux supprimer. Et je voudrait écrire un script qui créé un fichier C qui contienne A-B.

Je sais que en faisant :

grep -vf B A > C

je peux supprimer les lignes. Mais supprimer complètement les lignes m'inquiète un peu. Je veux pouvoir revenir en arrière.

Donc j'ai commencé à écrire un script avec des pistes trouvées sur internet. Ce qui me manque c'est comment remplacé la ligne par le caractère $ + la ligne.

Je sais qu'en faisant
grep -n -f B A | cut -d: -f1
j'obtiens les numéros des lignes sur lesquels il faudrait ajouter le caractère $ mais j'ai tout essayé avec sed et j'ai pas trouvé.

Voici pour l'instant le script tel qu'il est.

#!/bin/bash
oldIFS=$IFS
IFS=$'\n'
for i in $(cat $1)
do
        temp='$'`echo $i`
        echo $temp
        sed -e 's/$i/$temp/1' $2
        #sed -e `{$i}d`
done
IFS=$oldIFS

Merci pour votre aide. wink


"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
---------------------------
Papa tu me manques...

Hors ligne

#2 Le 22/09/2009, à 21:17

AnsuzPeorth

Re : Ajouter un caractère au début de certaines lignes

Bjr,

J'ai pas tout compris ...:)

Et je voudrait écrire un script qui créé un fichier C qui contienne A-B.

Regarde du coté de la commande diff

Si tu veux juste ajouter un $ devant certaine ligne, avec sed:

#considéront que la sortie des numeros de grep sont ok (j'ai pas essayé la commande).
#l'option -i de sed ecrit dans le fichier, donc faire une copie de A en fichier.txt, qui sera donc A avec des $ devant les lignes de sortie du grep
grep -n -f B A | cut -d: -f1 | xargs -I{} sed -i "{}s/^/\$/' fichier.txt

Dernière modification par AnsuzPeorth (Le 22/09/2009, à 21:18)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 24/09/2009, à 01:13

Ferod

Re : Ajouter un caractère au début de certaines lignes

Bonjour

Et un grand merci c'est parfait ! Ca fait exactement ce que je voulais. T'es un dieu ! tongue

Youpi ! smile

En cherchant j'étais tombé sur un site qui donne plein de commandes avec sed mais y'avait pas celle là.

C'est puissant quand mème la commande... cool


"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
---------------------------
Papa tu me manques...

Hors ligne

Haut de page ↑