2012-02-16 9 views
11
私は、この文字列を持っている UNIX

変更列のchar X

にシンプルな文字列操作を行うにはどのくらいの時間を探してい

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

をそして、私は第五文字を変更する必要がありますどのようにすることができますか?それはこのtheStr[4] = 'A'; // Zero based index.

答えて

27

あなたは、sedでストリームラインエディタをこれを達成することができます

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

まず、あなたはA.

+0

+1。確かにsedは正しいツールです。副次的に、この特定のバージョンは、入力文字列が '。' – CodeExpress

+2

いいえ、実際には、 '.'は文字「ドット」を表しませんが、すべての文字に一致します。もし私がドットにマッチさせたいのであれば、 '\。 'と書くでしょう。 – jurgemaister

+0

ああ、私がそれを書いたときには全く気づいていませんでした。 これは完璧です! – CodeExpress

3

のように行うのC#

最初の部分は、その後、最初の4つの文字を返し、それはエレガントだ場合、私は知らない、またはあなたが必要があるのbashのバージョンが、

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

文字「A」、および6日1ここで

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

で始まるすべての文字が目にtutorial本当に良いものですリング操作。

0
[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/' 
replace B please 
で5番目の文字を置き換える$ theStrの出力はsedのためのパイプ、

上記のsedコマンドは、の8th文字のを置き換えます。したがって、は何であるかを指定する必要はありませんアトラクターは交換されます。もし上記のコードで

はちょうどあなたがと交換したい文字で

  • Bにしたい文字位置に

    • 8を交換する必要があります!

    だからあなたの具体的な例のためには、次のようになります。

    [email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' 
    ....A.......... 
    

    あなたの代わりにBの文字列を提供することにより、文字列で置き換えるか、単にBがあるものを提供しないことにより、Aを削除することができますことは言うまでもありません(\1\2

  • 関連する問題