Shell Scripting子串替换

时间:2015-07-06 06:53:31

标签: shell

我是Shell Scripting的新手,我遇到了问题。 我有一个像abc_some不同text.ext字符串的文件,并希望将其翻译为abcTRY。现在有很多带有下划线(_)的字符串文件,但我只需要用扩展名(.ext)和下划线替换它们,所有这些字符串都有不同的文字写在下划线和扩展名之间。

Input= abc_some varied text.ext

Output= abcTRY

我写了这个:

grep -o "abc_.*.ext"| cut -d '_' -f1

现在不知道如何用TRY替换剩下的部分,还想知道abc是否也不同,该做什么。

希望问题很清楚。感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用sed(使用扩展的正则表达式 ERE )来执行此操作:

sed -r 's/(abc)_.*?\.ext/\1TRY/g' file

要更改文件:

sed -r --in-place 's/(abc)_.*?\.ext/\1TRY/g' file

或使用Basic正则表达式( BRE ):

sed 's/\(abc\)_.*\.ext/\1TRY/g' file