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

[ASUS] -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. [ASUS]
       
      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
    2. [ASUS]
       
      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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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