我是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是否也不同,该做什么。
希望问题很清楚。感谢。
答案 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