2015-08-24 37 views
1

我需要刪除<#>在以下模式:使用「sed的」 shell命令部分替代串

vdd1a<1> 
vdd1b<2> 
vdd1c<3> 
.... 

輸出應該是這樣的:

vdd1a 
vdd1b 
vdd1c 
... 

我試圖做到這一點sed 's/\(vdd1[a-z]*\).<[0-9]>/\1/' file1 > file2

但它一直給我「vdd1」。

我該如何正確地做到這一點?

回答

1

點後. paren匹配後的字母1.你需要擺脫它。即,

sed 's/\(vdd1[a-z]*\)<[0-9]>/\1/' file1 > file2 

或者,你可以只用一個空白的模式,即更換<[0-9]>

sed 's/<[0-9]>//' file1 > filed 
+0

感謝托特,我在這個文件中像「VDD 3 <#>」我不想觸摸等圖案。 – Bryan

0

如果線路不包含另一個<除了一個在<#>部分,你可以避免使用sed和使用類似cut代替,例如:

cut -d"<" -f1 <<< "vdd1a<1>" 

會打印:

vdd1a 

與文件調用它:

cut -d"<" -f1 <file1> file2 
+0

謝謝higuaro,我在這個文件中有其他模式,如「vdd3a <#>」和其他一些.. <#> ..我不想碰的東西。 – Bryan