2015-08-24 40 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