Pb sed : suppression de lignes

Résolu/Fermé
userette - 23 avril 2009 à 15:48
 userette - 23 avril 2009 à 17:42
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
A voir également:

7 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 895
23 avril 2009 à 15:53
Salut,
sed -n '1,5d' tmp > fichier.out
0
ç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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 avril 2009 à 16:10
sed -n -i.bak '1,5d' tmp
0
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 avril 2009 à 16:13
sed -n '1,5d' tmp > tmp.bak && mv tmp.bak tmp

0
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 avril 2009 à 16:23
Oups ;-(( Enlève le "-n" :
sed  '1,5d' tmp > tmp.bak && mv tmp.bak tmp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 avril 2009 à 16:32
Sinon il y a "ed" aussi :
 ed -s fich <<< $'1,5d\nw'
;-))
0
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 avril 2009 à 17:35
Soit avec des quotes doubles autour de l'expression :
sed  "1,$num_ligned" tmp

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

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


merciiiiiiiiiii jipicy du fond du coeur
0