(GNU)Sed:如何将第n个字符中的任何字符替换为第n + 10个字符?

Chr*_*ris 3 regex bash sed

我需要在字符串中替换第10到第20个字符,如下所示:

123456789012345678901234567890

到目前为止,我已经尝试过:

一个)

仅适用于第10个角色: echo "123456789012345678901234567890" | sed 's/./X/10'

b)不适用于该范围:

echo "123456789012345678901234567890"  | sed 's/./X/10,20'
echo "123456789012345678901234567890"  | sed 's/./X/10\,20'
echo "123456789012345678901234567890"  | sed 's/./X/\{10,20\}'
echo "123456789012345678901234567890"  | sed 's/./X/\{10\,20\}'
Run Code Online (Sandbox Code Playgroud)

不起作用,我得到错误

's'的未知选项

所以 - 问题是 - 我该如何使它工作:

echo "123456789012345678901234567890" | sed 's/./X/10,20'

Fre*_*ihl 5

尝试:

$ sed -r "s/^(.{9})(.{11})/\1XXXXXXXXXX/" <<< 123456789012345678901234567890
123456789XXXXXXXXXX1234567890
Run Code Online (Sandbox Code Playgroud)