2014-10-10 63 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:]]可以用来匹配任何种类的空白。