[SED]-problème de boucle dans script shell

Fermé
[ASUS] - 5 févr. 2010 à 10:57
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 5 févr. 2010 à 11:37
Bonjour,
Je travaille sur un script bash et j'aimerai savoir comment, avec les commandes Sed, laisser une ligne vide entre les lignes que je veux enregistrer dans un fichier.
De plus j'aimerai connaitre la syntaxe qui me permettrai d'incrémenter les lignes d'un fichier dans une variable (dans une boucle while), c'est à dire :

$var<"ligne1"
traitements
$var<"ligne2"
traitements
$var<"ligne3"
traitements
.
.
.
etc

Je n'ai pas précisé mon objectif car je ne veux connaitre que la syntaxe
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 févr. 2010 à 11:07
Salut,

Je travaille sur un script bash et j'aimerai savoir comment, avec les commandes Sed, laisser une ligne vide entre les lignes que je veux enregistrer dans un fichier.
Tout dépend du traitement (syntaxe) effectué avec sed ;-\

Mais en gros il suffit de rajouter un "\n" en fin de ligne traitée.


De plus j'aimerai connaitre la syntaxe qui me permettrai d'incrémenter les lignes d'un fichier dans une variable (dans une boucle while)

var=1
((var++)
0
oui, je faisait toujours echo "\n" >> $log
mais comment je commence à apprendre un peu le sed, je me demandais s'il existait une commande sed qui me permettrai de sauter des lignes ... donc je laisse "\n" :-)

Pour ce qui est de l'incrémentation, ta syntaxe me permettrai plus d'incrémenter des numéro de ligne non ?
ou alors c'est le même principe avec des chaînes de caractères ?
0
j'ai trouvé avec l'option -n (next) mais je n'ai aucune idée pour écrire la commande

• Remplace l'enregistrement courant dans l'espace de travail par la ligne suivante sans entamer
un nouveau cycle. La ligne remplacée quant à elle est envoyé sur la sortie standard.
• echo -e "AAA\nBBB\nCCC\nDDD" | sed -n '/BBB/ {n;p;q}'

A quoi correspondent les chaines AAA nBBB nCCC ... BBB etc ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 févr. 2010 à 11:37
Re-

Là on tourne en rond !

Il nous faut des exemples précis de ce que tu veux, du style AVANT => APRES.

Un exemple d'ajout de ligne vide :

jp@MDK:~/tmpfs ssh$ cat plop
$var<"ligne1"
traitements
$var<"ligne2"
traitements
$var<"ligne3"
traitements

jp@MDK:~/tmpfs ssh$ sed -n '/traitements/! s/.*/&\n/w foo' plop

jp@MDK:~/tmpfs ssh$ cat foo
$var<"ligne1"

$var<"ligne2"

$var<"ligne3"

jp@MDK:~/tmpfs ssh$


Il ne faut pas mélanger les commandes/syntaxes propres au shell (echo) et les commandes/syntaxes de d'outils comme "sed" ou "awk" !

0