在索引X处更改stringchar

我search了很长时间如何在UNIX做一个简单的string操作

我有这个string:

 theStr='...............' 

而且我需要把第五个字符改成A,怎么办呢?

C#它是这样做的theStr[4] = 'A'; // Zero based index. theStr[4] = 'A'; // Zero based index.

你可以用sed来实现这一点,流线编辑器:

echo $theStr | sed s/./A/5

首先将$ theStr的输出传送给sed,用se替换第五个字符。

 a="............" b="${a:0:4}A${a:5}" echo ${b} 

这是一个非常好的字符串操作教程 。

我不知道它是否优雅,或者你需要哪个版本的bash,但是

 theStr="${theStr:0:4}A${theStr:5}" 

第一部分返回前四个字符,然后返回字符“A”,然后返回从第六个字符开始的所有字符

 shivam@desktop:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/' replace B please 

上面的sed命令可以替换第8个字符,因此不必指定要替换的字符。

在上面的代码中,你只需要替换

  • 8与你想要的角色位置
  • 乙与字符什么想取代!

因此,对于您的具体示例,它变成:

 shivam@desktop:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' ....A.......... 

更何况,你可以通过提供字符串而不是B来替换字符串A,或者只是通过不提供任何其中B是( \1\2