Sed avec étiquette et substition

Résolu
bab1812 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
bab1812 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aurais encore besoin de votre aide avec la commande sed.

Je souhaiterai avec la commande sed commenter certaines lignes d'un programme pour cela les lignes sont repérer avec une étiquette stocké dans num.
Au préalable j'ai numéroté les lignes de mon programme avec la commande "nl" pour pourvoir les repérer avec l'étiquette.
exemple de lignes d'un fichier temp à commenter :

1 exemple de
2 programme
3 pour la commande sed

Je souhaite commenter la 3eme lignes de maniere à ajouer "C" devant la phrase de la maniere suivante :
1 exemple de
2 programme
3 C pour la commande sed

Pour cela j'utilise un programme fortran dans lequel j'appelle la commande sed avec la fonction "call system"

Voici le bout de programme

/-----------------------------
num ='3 '
field= 'pour'

command = 'sed -i " '//num//' s/'//field//'/C '//field//'/" temp'

print*, 'command =',command
call system(command)
/---------------------------------------------------------

Cette commande marche de manière tres aléatoire.
Auriez vous une commande ou une méthode plus appropriée

Merci de votre aide


A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Au préalable j'ai numéroté les lignes de mon programme avec la commande "nl" pour pourvoir les repérer avec l'étiquette.

A quoi bon ?
sed
sait faire cela nativement.

$ cat plop 
exemple de
programme
pour la commande sed

$ sed '3 s/^/C /' plop
exemple de
programme
C pour la commande sed

$ n=3;sed "${n} s/^/C /" plop
exemple de
programme
C pour la commande sed
0
bab1812 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse,
quand j'utilise cette 'sed -i "${n} s/^/C /" temp' dans mon programme, ça me commente toutes les lignes ..
Il me semble qu'il ne comprend pas l'étiquette ${n}

Merci
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Il me semble qu'il ne comprend pas l'étiquette ${n}
La variable
$n
est bien déclarée auparavant ?
0
bab1812 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai réussi, en fait la commande sed est une chaîne de caractere dans mon programme fortran. La solution est de remplacer ${n} par //n//' . je fais une concatenation avec la variable n

et ça donne
command ='sed -i "'//n//'s/^/Cn /" temp'
call system(command)

Merci pour ton aide
0