Agora eu tenho um arquivo simples que eu quero:
~ cat sample
##tag##
xxxxxxx
xxxxxxx
##tag##
O que espero é remover a linha ## tag ## do par e deixar as coisas do meio em paz. Eu posso fazer isso (exceto que há uma linha vazia na parte inferior):
~ sed -r "N;N;N; s/##tag##n((.*n)*)##tag##/1/" sample
xxxxxxx
xxxxxxx
Mas o slogan nem sempre é tão elegante quanto eu quero, há outro arquivo:
~ cat sample2
##tag###dklxjexx
xxxxxxx
xxxxxxx
asdf##tag###xosy
Eu sei que você entendeu meu ponto de vista, ainda quero remover o slogan:
~ sed -r "N;N;N; s/##tag.*n((.*n)*).*tag##/1/" sample2
Mas não consegui imprimir nada! Por quê??
Estou realmente ansioso por isso q, obrigado pelo seu tempo e perdoe meu pobre inglês :)
insira a descrição da imagem aqui
assim é .
fósforos n
? Como está o img acima?
Respostas:
1 para resposta № 1Tente usar [^n]*
ao invés de .*
:
sed -r "N;N;N; s/[^n]*##tag[^n]*n(.*)n[^n]*tag##.*/1/" sample2
Além disso, você precisa levar em consideração caracteres adicionais antes / depois da "###tag##"
marcador.
0 para resposta № 2
Isso pode funcionar para você (GNU sed):
sed "/##tag##/,//{//d}" file
Para manter os detalhes também nas linhas de tag, use:
sed "/##tag##/,//{s///}" file