2017-02-28 43 views
2

替換這是我的文件example.txt中如何做多個模式與SED

{foo} 
{bar} 
{f}oo} 
{ba{r} 
{fo}o} 
{b{ar} 

我想這樣的結果:

<div class="id">foo</div> 
<div class="id">bar</div> 
<div class="id">f}oo</div> 
<div class="id">ba{r</div> 
<div class="id">fo}o</div> 
<div class="id">b{ar</div> 

我在記事本++得到結果有命令如上

([}]\r\n)|(\r\n[{])|(^[{])|([}]$) 
(?1}</div>)(?2<div class="id">{)(?3<div class="id">{)(?4}</div>) 

我試過這個sed命令

sed -i '[email protected]}\r\[email protected]</div>@g' *.html 

這使我的文件保持不變。如何正確使用sed

回答

2

使用以下sed命令與特定的正則表達式模式:

sed -ri 's/\{(.+)\}/<div class="id">\1<\/div>/g' testfile 

-r選項允許擴展正則表達式


\{(.+)\} - 匹配包圍大括號{}

\1任何字符 - 指向第一個被捕獲的組這是(.+)

+0

你好坦克,但你的命令無法正常工作對我來說,我有編輯上面我的問題,更換 { 和 } 只用火柴頂線和結束線 –

+0

@kijiroluduatiga,檢查我的更新,它適用於您的新輸入示例 – RomanPerekhrest

0

如何

sed -e 's/{\(.*\)}/<div class="id">\1<\/div>/' 

的sed是面向行的,所以你不會在記錄找到\n(除非你使用一些先進的命令)。

+0

如何替換{}內的多個括號,例如{f} oo {bar},我想要結果

f}oo{bar
,所以只需要替換括號中匹配的頂行和新行,使用^ {and} $ not正在爲答案sed的 –

1

如何使用兩個簡單的表情,就像這樣:

sed -i '' -e 's/^./<div class="id">/;s/.$/<\/div>/' file 
  • 替換<div class="id">第一個字符和最後一個字符用</div>留行的其餘部分完好。
  • 不需要任何捕捉組

給出了這樣的輸出:

<div class="id">foo</div> 
<div class="id">bar</div> 
<div class="id">f}oo</div> 
<div class="id">ba{r</div> 
<div class="id">fo}o</div> 
<div class="id">b{ar</div> 
0

這您可能感興趣的用戶Perl的

$ cat file 
{foo} 
{bar} 
{f}oo} 
{ba{r} 
{fo}o} 
{b{ar} 
$ 
$ perl -lpe 's/^.(.*?).$/<div class="id">\1<\/div>/' file 
$ 
<div class="id">foo</div> 
<div class="id">bar</div> 
<div class="id">f}oo</div> 
<div class="id">ba{r</div> 
<div class="id">fo}o</div> 
<div class="id">b{ar</div> 

它也有保存在位李ke sed-i