SED:搜索字母数字字符串并替换它

SED:搜索字母数字字符串并替换它

我需要使用 SED 搜索和替换字母数字字符串。

搜索字符串:Test:rXXXXX,其中 XXXXX 始终为 5 位数字

替换字符串:Test:rYYYYY,其中 YYYYY 始终是 5 位数字

我想出了以下几点:

echo 'Test:r12345' | sed 's/Test:r[0-9][0-9][0-9][0-9][0-9]$/Test:rYYYYY/g'

目前有效。

有没有更好的方法来实现这一点?我不想在表达式中使用 '[0-9]' 5 次

答案1

这只是另一个使用 sed 的小修改,以匹配“Test:r”子表达式,使替换更简洁

echo 'Test:r12345' | sed 's/\(Test:r\)[0-9]\{5\}/\1YYYYY/g'

答案2

请改用以下语法:

[0-9]{5}

这要求您将“-r”传递给 sed,因此新的示例将是:

echo 'Test:r12345' | sed -r 's/Test:r[0-9]{5}$/Test:rYYYYY/g' 

答案3

嗯,根据您的示例,您可以使用替换第二个字段awk

echo 'Test:r12345' | awk -F":" '{$2="rYYYYY"}1' OFS=":"

无需创建复杂的正则表达式。KISS

相关内容