我搜索了半天如何做一個簡單的字符串操作中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