Все:
tr '[:lower:]' '[:upper:]'
(не забудьте кавычки, в противном случае , что не будет работать , если есть файл с именем :
, l
... или r
в текущем каталоге) или:
awk '{print toupper($0)}'
или:
dd conv=ucase
предназначены для преобразования символов в верхний регистр в соответствии с правилами, определенными в текущей локали. Однако даже в тех случаях, когда локали используют UTF-8 в качестве набора символов и четко определяют преобразование из строчных в прописные, по крайней мере, GNU dd
, GNU tr
и mawk
(по умолчанию awk
в Ubuntu, например) не следуют им. Кроме того, не существует стандартного способа указать локали, отличные от C
или POSIX
, поэтому, если вы хотите преобразовать файлы UTF-8 в верхний регистр переносимым независимо от текущей локали, вам не повезло с помощью стандартной инструментальной панели.
Как часто, для мобильности, ваша лучшая ставка может быть 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
:Работает с GNU
awk
:источник
tr
илиawk
. Например, большинство из нихtr
будет правильно преобразовывать символы, когда в локали UTF8, в соответствии с текущей локалью, GNUtr
этого не делает.mawk
не делает.tr
, но не сawk
Это работает с OS X,
tr
но не с GNUtr
:Это работает с,
gawk
но не сmawk
илиnawk
(который находится/usr/bin/awk
в OS X):Другой вариант - использовать GNU
sed
:В Bash 4.0 и более поздних версиях вы также можете использовать
^^
расширение параметра:источник