我需要使用 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