我已经搜索了很长时间如何在UNIX
我有这个字符串:
theStr='...............'
我需要将第5个字符更改为A,如何才能完成?
在C#
中,theStr[4] = 'A'; // Zero based index.
答案 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个字符,无论是什么,因此您不必指定要替换的字符。
在上面的代码中,您只需要替换
因此,对于您的具体示例,它变为:
shivam@desktop:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
更不用说您可以通过提供字符串而不是B来替换字符串A或者只是通过不提供B是(\1\2
)