web-dev-qa-db-ja.com

インデックスXの文字列文字を変更します

UNIXで簡単な文字列操作を行う方法を長い間探していました

私はこの文字列を持っています:

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

そして、5番目の文字をAに変更する必要があります。どうすればよいですか?

C#このように行われますtheStr[4] = 'A'; // Zero based index.

これは、ストリームラインエディタであるsedを使用して実現できます。

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

まず、$ theStrの出力をsedにパイプします。これにより、5番目の文字がAに置き換えられます。

36
Jørgen R
a="............"
b="${a:0:4}A${a:5}"
echo ${b}

これが本当に良いものです チュートリアル 文字列操作について。

エレガントかどうか、またはどのバージョンのbashが必要かはわかりませんが、

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

最初の部分は最初の4文字、次に文字「A」、そして6番目から始まるすべての文字を返します。

4
vmpstr
shivam@desktop:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please

上記のsedコマンドは、8th文字関係なくを置き換えます。したがって、置き換える文字を指定する必要はありません。

上記のコードでは、置き換える必要があります

  • あなたが望む文字位置で8
  • 置き換えたい文字のB!

したがって、特定の例では、次のようになります。

shivam@desktop:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........

言うまでもなく、Bの代わりに文字列を指定してAを文字列に置き換えるか、Bが(\1\2

0
CodeExpress