純粋に楽しみのために、、、、、正規表現awk
、または Python や Perl を除く他の Unix ツールを使用して、すべての小文字のテキストを他のすべての文字の大文字に変換する方法を考えていました。sed
tr
これまで私は試しました
echo "hello" | sed s/\([a-z]\)/\U\1/g
目的の出力は である必要がありますHeLlO
。誰かがこれを改善するか、別のアプローチを提供していただければ幸いです。
$ sed 's/[a-z].\?/\u\0/g' <<< hello
HeLlO
(免責事項: これは非標準機能に依存する場合があります。GNU sed バージョン 4.2.1 で実行しました。)
これはうまくいくかもしれません(GNU sed):
sed 's/[[:lower:]][^[:alpha:]]*\([[:alpha:]]\|$\)/\u&/g' file
あなたのためのawk
方法:
echo "hello" | awk '{for(i=1;i<=NF;i+=2)$i=toupper($i)}1' FS= OFS=
HeLlO