UNIX
で簡単な文字列操作を行う方法を長い間探していました
私はこの文字列を持っています:
theStr='...............'
そして、5番目の文字をAに変更する必要があります。どうすればよいですか?
C#
このように行われますtheStr[4] = 'A'; // Zero based index.
これは、ストリームラインエディタであるsed
を使用して実現できます。
echo $theStr | sed s/./A/5
まず、$ theStrの出力をsedにパイプします。これにより、5番目の文字がAに置き換えられます。
a="............"
b="${a:0:4}A${a:5}"
echo ${b}
これが本当に良いものです チュートリアル 文字列操作について。
エレガントかどうか、またはどのバージョンのbashが必要かはわかりませんが、
theStr="${theStr:0:4}A${theStr:5}"
最初の部分は最初の4文字、次に文字「A」、そして6番目から始まるすべての文字を返します。
shivam@desktop:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please
上記のsedコマンドは、8th文字関係なくを置き換えます。したがって、置き換える文字を指定する必要はありません。
上記のコードでは、置き換える必要があります
したがって、特定の例では、次のようになります。
shivam@desktop:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
言うまでもなく、Bの代わりに文字列を指定してAを文字列に置き換えるか、Bが(\1\2
)