<>, ## veya || ile ayrılmış gruplar içeren bir metin gövdeye sahibim. blok üst üste, ancak bu gibi, birden çok çizgileri olabilir hiç:Birden fazla sınırlandırılmış bloğun değiştirilmesi
#A fully emphasized line#
A line with #emphasis inside#.
#Several lines of
text
With emphasis#
no emphasis
Line #with# multiple #emphasis#.
Line <with some > |text of| #each type#.
I [ve] ve] ardından son bir sınırlayıcı koymak ile sınırlayıcı her çift yerine çalışılıyor; Örneğin son satırı olmalıdır: Ben ilk bölümü yapacak bir sed komut dosyası oluşturdular
Line [with some ]> [text of]| [each type]#.
:
sed -e ':left s/[#|<]/[/; t right; n; b left :right s/[#|>]/]/; t left;n; b right'
Ama & (veya kullanmaya çalıştığınızda (..) + \ 1) bu şekilde geri karakteri koymak için:
sed -e ':left s/[#|<]/[/; t right; n; b left :right s/[#|>]/]&/; t left;n; b right'
aşağıdaki alıyorum:
Burada neyin yanlış gittiğinden emin değilim - desen bloğu ile bir şekilde vidalanmış gibi görünüyor. Üç arama ile (eşleşme türünde kodlanmış bir tane) değiştirebilirdim, ama bu aşırı görünüyor.
Serin. Birleştirilmiş sürüm bununla da çalışır, böylece üç arama şu şekilde değiştirilebilir: 's/[# | <]\([^#|>] * \) \ ([# |>] \)/[\ 1] \ 2/g; ' –
user2596375 - Üç sed ifadesi daha üstündür, çünkü deseniniz mutlaka eşleşenleri değil, herhangi bir sınırlayıcı çiftinin yerini alır. Örneğin #text>, # metin # değil olsa bile, [metin]> ile değiştirilir. – gbrener