Sed et espace

Résolu
bab1812 Messages postés 11 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. bab1812 Messages postés 11 Statut Membre
     
    il me faut écrire le "mot " à partir de la colonne 32 pour etre exacte
    0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  3. bab1812 Messages postés 11 Statut Membre
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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