我搜索了半天如何做一个简单的字符串操作中UNIX
变化串字符X
我有这个字符串:
theStr='...............'
,我需要改变第5字符到A,怎么做?
在C#
它做这样theStr[4] = 'A'; // Zero based index.
我搜索了半天如何做一个简单的字符串操作中UNIX
变化串字符X
我有这个字符串:
theStr='...............'
,我需要改变第5字符到A,怎么做?
在C#
它做这样theStr[4] = 'A'; // Zero based index.
您可以sed
,流线编辑器实现这一点:
echo $theStr | sed s/./A/5
首先,你管$ theStr的输出sed的,这与替代A第五个字符
我不知道这是否是优雅的,或者你需要的bash的版本,但
theStr="${theStr:0:4}A${theStr:5}"
第一部分返回前四个字符,则字符“A”,然后将所有开始与第6个一个
a="............"
b="${a:0:4}A${a:5}"
echo ${b}
这里的字符是一个关于ST真的好tutorial环操纵。
[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please
上面的sed命令替换第8个字符不管它是什么,因此您不必指定什么ch字符将被替换。
在你上面的代码只是有字符位置来代替
因此,对于你具体的例子就变成:
[email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
更何况,你可以用一个字符串替换一个通过提供的字符串,而不是B或只是其中B是不提供任何删除一个(\1\2
)
+1。事实上,sed是正确的工具。在附注中,只有输入字符串由'。'组成时,此特定版本才会起作用。 – CodeExpress 2012-02-16 20:55:04
不,实际上,'.'不代表字符“点”,但它与所有角色匹配。如果我想匹配这个点,它会写'\ .' – jurgemaister 2012-02-16 20:57:37
呵呵,根本没有意识到当我写这个时。 这是完美的! – CodeExpress 2012-02-16 21:14:02