UNIX
にシンプルな文字列操作を行うにはどのくらいの時間を探してい
:
theStr='...............'
をそして、私は第五文字を変更する必要がありますどのようにすることができますか?それはこのtheStr[4] = 'A'; // Zero based index.
UNIX
にシンプルな文字列操作を行うにはどのくらいの時間を探してい
:
theStr='...............'
をそして、私は第五文字を変更する必要がありますどのようにすることができますか?それはこのtheStr[4] = 'A'; // Zero based index.
あなたは、sed
でストリームラインエディタをこれを達成することができます
echo $theStr | sed s/./A/5
まず、あなたはA.
のように行うのC#
で
最初の部分は、その後、最初の4つの文字を返し、それはエレガントだ場合、私は知らない、またはあなたが必要があるのbashのバージョンが、
theStr="${theStr:0:4}A${theStr:5}"
文字「A」、および6日1ここで
a="............"
b="${a:0:4}A${a:5}"
echo ${b}
で始まるすべての文字が目にtutorial本当に良いものですリング操作。
[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please
で5番目の文字を置き換える$ theStrの出力はsedのためのパイプ、
上記のsedコマンドは、の8th文字のを置き換えます。したがって、は何であるかを指定する必要はありませんアトラクターは交換されます。もし上記のコードで
はちょうどあなたがと交換したい文字で
だからあなたの具体的な例のためには、次のようになります。
[email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
あなたの代わりにBの文字列を提供することにより、文字列で置き換えるか、単にBがあるものを提供しないことにより、Aを削除することができますことは言うまでもありません(\1\2
)
+1。確かにsedは正しいツールです。副次的に、この特定のバージョンは、入力文字列が '。' – CodeExpress
いいえ、実際には、 '.'は文字「ドット」を表しませんが、すべての文字に一致します。もし私がドットにマッチさせたいのであれば、 '\。 'と書くでしょう。 – jurgemaister
ああ、私がそれを書いたときには全く気づいていませんでした。 これは完璧です! – CodeExpress