我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个字符,因此不必指定要替换的字符。
在上面的代码中,你只需要替换
因此,对于您的具体示例,它变成:
shivam@desktop:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' ....A..........
更何况,你可以通过提供字符串而不是B来替换字符串A,或者只是通过不提供任何其中B是( \1\2
)