「123456」などの文字列を変換しようとしています。ㅏ」から「123456ㅏ「または」ティー東へ」時間est"ですが、既存の大文字は変更せずに残します(例:testHW
be 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