我有以下列表:
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中实现它。
任何提示都将受到赞赏,在此先感谢。
答案 0 :(得分:2)
这个sed应该有效:
sed -i.bak 's/\(faultsPackage\)[0-9]*/\1/' file
此正则表达式查找包含faultsPackage<number>
文本的所有行,并使用捕获的组#1将其替换为faultsPackage