2010-04-11 6 views
3

J'ai un fichier html que je veux couper. Je veux supprimer une section depuis le début jusqu'à une chaîne donnée, et d'une autre chaîne à la fin. Comment je fais ça, de préférence en utilisant sed?Ajustement multiligne

Répondre

6

Avec GNU sed:

sed '/mark1/,/mark2/d;/mark3/,$d' 

cette

abc 
def 
mark1 
ghi 
jkl 
mno 
mark2 
pqr 
stu 
mark3 
vwx 
yz 

devient

abc 
def 
pqr 
stu 
+0

J'ajouterais que cela fonctionne uniquement avec des fichiers html correctement formatés (motif commence et se termine sur la même ligne!). –

+1

C'est vrai et normalement html devrait être manipulé avec un outil de bibliothèque robuste (et la chance et la direction du vent sont également impliqués). –

0

vous pouvez utiliser awk

$ cat file 
mark1 dsf 
abc 
def 
before mark2 after 
blah mark1 
ghi 
jkl 
mno 
wirds mark2 here 
pqr 
stu 
mark3 
vwx 
yz 

$ awk -vRS="mark2" '/mark1/{gsub("mark1.*","")}/mark3/{ gsub("mark3.*","");print;f=1 } !f ' file 

after 
blah 
here 
pqr 
stu