2015-12-02 51 views
1

如果行以「#」開頭,​​則將用空格替換第一個出現的「(」和最後出現的「)」作爲空白以下:僅當行以特定字開頭時,才替換第一個和最後一個字符的併發

樣品輸入:貓world.txt

MAP MT.POS(AUS) , SOUTH 
#TARGET(MT.POS(USA) , NORTH) 
MAP MT.POS(CAN) , NORTH 

我試圖做的sed使用如下

cat world.txt | sed -e '/^#/s/\(.*\))/\1 /; /^#/s/\(.*\)(/\1/' 

下面是我所期待的。

MAP MT.POS(AUS) , SOUTH 
#TARGET MT.POS(USA) , NORTH 
MAP MT.POS(CAN) , NORTH 

在此先感謝。

回答

1

您可以使用下面的命令sed

sed '/^#/s/(\(.*\))/\1/' file 

/^#/是地址匹配線開始具有#。這些行的主題是以下s替代)命令。它搜索行中的第一個和最後一個圓括號,並用它們之間的文本替換它們。

請注意.*匹配貪婪。這意味着它將消耗盡可能多的字符(包括括號),直到在行中找到最後一個右括號。

+0

謝謝。我正在考慮做更多這樣的sed'/^#/s/(\(.*\))/\t\1\t' – CodeDevotion