Pb sed : suppression de lignes
Résolu/Fermé
A voir également:
- Sed supprimer ligne contenant chaîne
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Hors ligne instagram - Guide
- Aller à la ligne excel - Guide
- Vente en ligne particulier - Guide
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
23 avril 2009 à 15:53
Salut,
sed -n '1,5d' tmp > fichier.out
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
23 avril 2009 à 16:10
sed -n -i.bak '1,5d' tmp
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
23 avril 2009 à 16:13
sed -n '1,5d' tmp > tmp.bak && mv tmp.bak tmp
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
23 avril 2009 à 16:23
Oups ;-(( Enlève le "-n" :
sed '1,5d' tmp > tmp.bak && mv tmp.bak tmp
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
23 avril 2009 à 16:32
Sinon il y a "ed" aussi :
ed -s fich <<< $'1,5d\nw';-))
thanks a lot jipicy :)))
tu m'aides bcp.
une dernière question. je veux mettre tt ça dans un script :
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 :
comment séparer le num_ligne du d ???? question bete je sais mais je trouve pas ;(
t'aurais une idée? merci
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
si je mets
j'ai :
comment je peux constituer le sed avec mon num_ligne ?
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 ?
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
23 avril 2009 à 17:35
Soit avec des quotes doubles autour de l'expression :
soit comme ça :
sed "1,$num_ligned" tmp
soit comme ça :
sed '1,'"$num_ligne"'d' tmp
23 avril 2009 à 16:08
j'ai l'impression que tt ne fonctionne pas pour moi !!! ça m'enerve