回答:
すべての:
tr '[:lower:]' '[:upper:]'
(引用符を忘れて、そうでないことはないでしょう仕事と呼ばれるファイルがあるかどうません:
、l
、...またはr
現在のディレクトリ内)または:
awk '{print toupper($0)}'
または:
dd conv=ucase
現在のロケールで定義されているルールに従って、文字を大文字に変換するためのものです。ただし、ロケールが文字セットとしてUTF-8を使用し、小文字から大文字への変換を明確に定義している場合でも、少なくともGNU dd
、GNU tr
、およびmawk
(awk
Ubuntu のデフォルトなど)はこれらに従いません。また、または以外のロケールを指定する標準的な方法はないため、現在のロケールに関係なく、移植性の高いUTF-8ファイルを大文字に変換する場合、標準のツールチェストではうまくいきません。C
POSIX
しばしば、移植性のために、あなたの最善の策はperlかもしれません:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
ここで、特定の文字の大文字バージョンが誰であるかについて全員が同意するわけではないことに注意する必要があります。
たとえば、トルコ語のロケールでは、大文字i
はI
でなくİ
(<U0130>
)です。ここではtr
、GNU trではなく家宝ツールチェストを使用します。
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
私のシステムでは、perl
へ、上位変換はで定義されている/usr/share/perl/5.14/unicore/To/Upper.pl
、と私はそれがGNUのlibcのから数文字の上に異なった動作をすることを見つけることtoupper()
でC.UTF8
、インスタンスのロケールperl
がより正確です。たとえば、ɀをɀにperl
正しく変換しますが、GNU libc(2.17)は変換しません。
あなたはこれawk
とそのtoupper
機能でこれを行うことができると思います。
GNUでは動作しませんtr
:
$ echo lľsšcčtťzž | tr '[:lower:]' '[:upper:]'
LľSšCčTťZž
GNUで動作しますawk
:
$ echo lľsšcčtťzž | awk '{ print toupper($0) }'
LĽSŠCČTŤZŽ
tr
またはawk
実装に依存します。たとえばtr
、現在のロケールによれば、ほとんどがUTF8ロケールの文字を正しく変換しますが、GNU tr
はそうではありません。mawk
しません。
tr
しますが、ないawk