修改字符串以使变量工作

时间:2013-12-10 13:41:21

标签: linux shell sed

我有以下列表:

faultsPackage1
faultsPackage2
faultsPackage3
faultsPackage4
faultsPackage5
faultsPackage6
faultsPackage7
seafloor
topLowerMiocene
topMetamorphicBasement
topMiddleEocene
topMiddleMiocene
topMiddleOligocenetoUpperEocene?
topPlioceneFromODP684
topUpperMioceneFromODP684

但我需要像这样塑造那些行(特别是只改变那些“faultsPackage”):

faultsPackage
faultsPackage
faultsPackage
faultsPackage
faultsPackage
faultsPackage
faultsPackage
seafloor
topLowerMiocene
topMetamorphicBasement
topMiddleEocene
topMiddleMiocene
topMiddleOligocenetoUpperEocene?
topPlioceneFromODP684
topUpperMioceneFromODP684

因为这些名称代表变量,这些变量会弹出一些进一步的过程。我试过了:

sed 's/[1-7]//'

但它会删除列表中的所有数字,因此它没用。我想,例如,在某种程度上它只能被检测到字母“e”后跟1-7中的数字然后删除这些数字,但不知道如何在shell中实现它。

任何提示都将受到赞赏,在此先感谢。

1 个答案:

答案 0 :(得分:2)

这个sed应该有效:

sed -i.bak 's/\(faultsPackage\)[0-9]*/\1/' file

此正则表达式查找包含faultsPackage<number>文本的所有行,并使用捕获的组#1将其替换为faultsPackage