Pb sed : suppression de lignes

Résolu
userette -  
 userette -
Bonjour tout le monde,
je voudrais supprimer un ensemble de lignes d'un fichier.

1/ lorsque je tape
sed '1d' tmp
ça marche --> suppression de la 1ere ligne du fichier tmp. sauf que ça m'affiche toujours le reste du fichier. je voudrais rediriger la sortie ou qu'il n'y ait plus de sortie du tt.

2/ lorsque je tape
sed '1,5d' tmp
, ça marche --> je voudrais supprimer toutes les lignes de 1 à 5.

quelqu'un pourrait m'aider. je sais que vs etes super fort dans ce forum :) :) :)

merci
Configuration: Unix
Firefox 3.0.9

7 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -n '1,5d' tmp > fichier.out
    0
    1. userette
       
      ça ne marche pas :(

      bash-2.05$ wc -l tmp
           100 tmp
      bash-2.05$ sed -n '1,5d' tmp
      bash-2.05$ wc -l tmp
           100 tmp
      bash-2.05$ 
      

      j'ai l'impression que tt ne fonctionne pas pour moi !!! ça m'enerve
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    sed -n -i.bak '1,5d' tmp
    0
    1. userette
       
      bash-2.05$ sed -n -i.bak '1,5d' tmp
      sed: illegal option -- i
      bash-2.05$ 
      


      toujours non.

      y'aurait-t-il une autre commande que sed pour supprimer les lignes?
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    sed -n '1,5d' tmp > tmp.bak && mv tmp.bak tmp

    0
    1. userette
       
      bash-2.05$ sed -n '1,5d' tmp > tmp.bak && mv tmp.bak tmp
      bash-2.05$ wc -l tmp
             0 tmp
      


      en fait, la commande sed -n '1,5d' tmp ne retourne rien. Dans le fichier tmp.bak est vide d'où tmp vide
      0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Oups ;-(( Enlève le "-n" :
    sed  '1,5d' tmp > tmp.bak && mv tmp.bak tmp
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Sinon il y a "ed" aussi :
     ed -s fich <<< $'1,5d\nw'
    ;-))
    0
    1. userette
       
      thanks a lot jipicy :)))
      tu m'aides bcp.

      une dernière question. je veux mettre tt ça dans un script :
      for MSISDN in $(cat msisdn.txt)
      do
        	echo $MSISDN
        	`perl -ne "next unless /^$MSISDN/;print and exit" base  >> tmp.txt`
        	num_ligne=`perl -ne "next unless /^$MSISDN/;print "$." and exit" Dump_IN_all.ctl`
        	echo $num_ligne
        	sed  '1,$num_ligned' tmp > tmp.bak && mv tmp.bak tmp  		
      done

      explication :
      je cherche une chaine $MSISDN dans le fichier base. si je trouve, je mets la ligne contenant la chaine ds un fichier tmp.txt.
      j'extrais le num de ligne où j'ai trouvé la chaine et je supprime toutes les lignes qui precedent ce num de ligne.

      Probleme :
      sed  '1,$num_ligned' tmp > tmp.bak && mv tmp.bak tmp

      comment séparer le num_ligne du d ???? question bete je sais mais je trouve pas ;(

      t'aurais une idée? merci
      0
  7. userette
     
    si je mets
    for MSISDN in $(cat msisdn.txt)
    do
      	echo $MSISDN
      	`perl -ne "next unless /^$MSISDN/;print and exit" base  >> tmp.txt`
      	num_ligne=`perl -ne "next unless /^$MSISDN/;print "$." and exit" Dump_IN_all.ctl`
      	echo $num_ligne
      	sed  '1,"$num_ligne"d' tmp > tmp.bak && mv tmp.bak tmp  		
    done

    j'ai :
    bash-2.05$ extract_info.sh 
    21620001019
    sed: command garbled: 1,"$num_ligne"d
    bash-2.05$ 


    comment je peux constituer le sed avec mon num_ligne ?
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Soit avec des quotes doubles autour de l'expression :
    sed  "1,$num_ligned" tmp

    soit comme ça :
    sed  '1,'"$num_ligne"'d' tmp
    0
    1. userette
       
      la 1ere ne marche pas.

      la 2eme marche ::):)))))))


      merciiiiiiiiiii jipicy du fond du coeur
      0