2014-10-10 66 views
1

我是新來的sed,所以想知道我如何匹配選項卡。我有一些像這樣的文字 -配對選項卡與sed

line one { 
      line two { 
        filler { 
          text value 
        } 
        line four 
      } 
    } 

我使用的表達式與上面的文本匹配,如果沒有選項卡。

sed -i -e "/ line two {/,/}/s/text .*\$/text new/" $file 

但是,也有2個標籤之前「線路2」和前「填料」前3個標籤和4個標籤「的文本值」。

任何幫助?

回答

3

sed中,選項卡表示爲\t。因此,替換將成功與下面的步驟進行:

sed -i -e "/\tline two {/,/}/s/text .*\$/text new/" "$file" 

所需的唯一變化是與/\tline two {/更換/ line two {/。命令/s/text .*\$/text new/不需要任何更改,因爲它不會嘗試匹配在text之前的空白區域。如果有可能是如下text一個選項卡,然後使用:

sed -i -e "/\tline two {/,/}/s/text[[:space:]].*\$/text new/" "$file" 

如果你不確定什麼空白字符會出現,表達[[:space:]]可以用來匹配任何種類的空白。