shell脚本中的字符串操作

shell脚本中的字符串操作,shell,sed,Shell,Sed,我有一个 string_temp="00112233445566778899AABBCCDDEEFF" X=AB 我需要用X内容替换字符串的第5和第6个元素(索引可以是任何内容)。 输出应为“0011AB33445566778899AABBCCDDEEFF” 请帮助我使用sed或任何其他简单方法来完成此操作。使用GNU sed。将位置4后的下两个字符替换为$X: string_temp="00112233445566778899AABBCCDDEEFF" X="AB" echo "$strin

我有一个

string_temp="00112233445566778899AABBCCDDEEFF"
X=AB
我需要用X内容替换字符串的第5和第6个元素(索引可以是任何内容)。 输出应为“0011AB33445566778899AABBCCDDEEFF”


请帮助我使用sed或任何其他简单方法来完成此操作。

使用GNU sed。将位置4后的下两个字符替换为$X:

string_temp="00112233445566778899AABBCCDDEEFF"
X="AB"
echo "$string_temp" | sed -r "s/(.{4}).{2}/\1$X/"
输出:

0011AB33445566778899AABBCCDDEEFF 0011AB33445566778899ABBCDDEEFF
避免在$string_temp和$X中使用
sed
的特殊字符(例如:
/
)?使用sed/awk/perl的解决方案更具可移植性,但这可以在bash中本机实现。我可以通过将字符串转换为数组轻松实现,但我的硬件上没有启用bash。我可以使用sed s//5/A替换第5个元素,但我想在单个命令中替换第5个和第6个。请将您的问题显示为您自己如何尝试解决此问题。无需涉及第二个反向引用,将其从两侧删除,并返回相同的结果。