Sed et espace

Résolu/Fermé
bab1812 Messages postés 10 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 22 avril 2019 - 18 déc. 2013 à 16:56
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 19 déc. 2013 à 10:02
Bonjour,

Je n'y connais pas grand chose en langage script.
Je souhaiterai avec la commande sed ecrire un mot dans un fichier à une ligne bien précise. Jusque là j'y arrive, mais j'ai besoin de mettre un certains nombre d'espace devant le mot. Il y a t'il des caractere speciaux a mettre dans la commande ?
La commande shell est appelé a partir d"un programm fortran avec la commande "call system"

Voici le bout de programme
command= 'sed -i "8i mot" temp '
print*, 'command =',command
call system(command)


Merci de votre aide

3 réponses

bab1812 Messages postés 10 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 22 avril 2019
18 déc. 2013 à 17:09
il me faut écrire le "mot " à partir de la colonne 32 pour etre exacte
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
18 déc. 2013 à 17:09
Salut,

La syntaxe originale de l'insertion avec la commande
i
voulait que cette instruction soit suivie d'un anti-slash. Avec Gnu-sed cette syntaxe s'est un peu perdue. Donc à essayer avec ton programme...

Chez moi ça marche :

$ cat plop
blabla
bla bla bla
bli bli
bliblibli

$ sed '3i\ mot' plop # Il y a 4 espaces après l'anti-slash
blabla
bla bla bla
mot
bli bli
bliblibli

$ sed '3i\\tmot' plop # Ici j'insère une tabulation (\t)
blabla
bla bla bla
mot
bli bli
bliblibli

0
bab1812 Messages postés 10 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 22 avril 2019
19 déc. 2013 à 09:56
Merci ça marche impeccable,

J'ai une autre question, dans ton exemple tu ne mets pas le -i derriere la commande sed. Quand je l'enleve ce -i dans ma commande ca ne fonctionne plus. Tu aurais une explication ?


Merci encore pour ton aide
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
19 déc. 2013 à 10:02
L'option
-i
(in-place, à ne pas confondre avec la commande
i
d'insertion) sert comme son nom l'indique à modifier le fichier d'origine.
Dans mon exemple je ne l'ai pas mis histoire que la sortie à l'écran soit conforme à tes attentes, par contre le fichier d'origine reste inchangé.
Pour une modification dudit fichier il faut obligatoirement utiliser l'option
-i
.
Une bonne habitude à prendre c'est aussi de rajouter à cette option un suffixe (
-i.bak
par exemple) qui crée une sauvegarde au cas ou...
0