sed:混合显式和正则表达式短语

时间:2012-10-22 22:55:56

标签: regex bash sed

我正在尝试编写一个sed命令来删除后跟两位数字的特定字符串。到目前为止,我有:

sed -e 's/bizzbuzz\([0-9][0-9]\)//' file.txt

但我似乎无法正确使用语法。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

sed -re 's/bizzbuzz[0-9]{2}//' file.txt

sed -re 's/\bbizzbuzz[0-9]{2}\b//' file.txt

如果搜索到的字符串有word boundary

sed -e 's/bizzbuzz[0-9]\{2\}//' file.txt

如果您没有GNU sed

答案 1 :(得分:1)

您当前的方法似乎应该可以正常工作:

$ echo 'FOO bizzbuzz56 BAR' | sed -e 's/bizzbuzz\([0-9][0-9]\)//'
FOO  BAR

答案 2 :(得分:0)

正如在其他答案中所说,语法似乎很好(带有不必要的括号)。 但是,您可能想要替换所有在每一行中找到的字符串吗?在这种情况下,你应该添加一个'在最后的'命令:

sed -e 's/bizzbuzz\([0-9][0-9]\)//g' file.txt