【问题标题】:String manipulation in shell scriptshell脚本中的字符串操作
【发布时间】:2016-01-12 16:34:21
【问题描述】:

我有一个

string_temp="00112233445566778899AABBCCDDEEFF"
X=AB

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

请帮助我使用 sed 或任何其他简单的方法来做到这一点。

【问题讨论】:

  • 您使用的是哪个外壳?使用 sed/awk/perl 的解决方案会更便携,但这可以在 bash 中本地完成。
  • 我可以通过将字符串转换为数组来轻松做到这一点,但是我的硬件上没有启用 bash。
  • 我可以用 sed s/./5/A 替换第 5 个元素,但我想在单个命令中替换第 5 个和第 6 个元素。
  • edit你的问题表明你是如何尝试自己解决这个问题的。

标签: shell sed


【解决方案1】:

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

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

输出:

0011AB33445566778899AABBCCDDEEFF

避免在 $string_temp 和 $X 中使用 sed 的特殊字符(例如:/)。

【讨论】:

  • 不需要涉及第二个反向引用,从两边消除它,返回相同的结果。
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
相关资源
最近更新 更多