sed を使用して、数字ではなく最初の文字を大文字に置き換え、他の文字はそのままにします。

sed を使用して、数字ではなく最初の文字を大文字に置き換え、他の文字はそのままにします。

「123456」などの文字列を変換しようとしています。」から「123456「または」ティー東へ」時間est"ですが、既存の大文字は変更せずに残します(例:testHWbe TestHW

私はたくさん試しました:

sed 's/[[:alpha:]]./\u\1/'

運がないですね。どんなアイデアがありますか?

答え1

\1\nまたは、数値である一般形式は、対応する逆参照式と一致するnテキストで置き換える必要があります。これは、\(...\)BREまたはERE(...)間でテキストをグループ化して定義できます。

GNU sedの使用:

$ echo 123456a | sed 's/\([[:alpha:]]\)/\u\1/'
123456A

または:

$ echo 123456a | sed -E 's/([[:alpha:]])/\u\1/'
123456A

&逆参照の代わりに引用した一致テキストを使用することもできます。

$ echo 123456a | sed 's/[[:alpha:]]/\u&/'   
123456A

[:alpha:]小文字と大文字の両方が一致するため、同様の内容はそのまま123456Aa残ります。

最初の小文字を対応する大文字に置き換えるには、以下を使用する必要があります[:lower:]

$ echo 123456Aa | sed 's/[[:lower:]]/\u&/'
123456AA

関連情報