在索引X处更改字符串char

时间:2012-02-16 19:46:35

标签: string bash unix

我已经搜索了很长时间如何在UNIX

中进行简单的字符串操作

我有这个字符串:

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

我需要将第5个字符更改为A,如何才能完成?

C#中,theStr[4] = 'A'; // Zero based index.

就像这样做了

4 个答案:

答案 0 :(得分:32)

您可以使用流线编辑器sed来实现此目的:

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

首先,你将$ theStr的输出管道输出到sed,它将第五个字符替换为A.

答案 1 :(得分:12)

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

这是关于字符串操作的一个非常好的tutorial

答案 2 :(得分:3)

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

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

第一部分返回前四个字符,然后是字符' A',然后是所有以第6个字符开头的字符

答案 3 :(得分:0)

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

上面的sed命令取代了第8个字符,无论是什么,因此您不必指定要替换的字符。

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

  • 8,带有你想要的角色位置
  • B带有想要替换的角色!

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

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

更不用说您可以通过提供字符串而不是B来替换字符串A或者只是通过不提供B是(\1\2

的任何内容来删除A.