Команда для преобразования строки в верхнем регистре в нижний регистр?

Да, вы можете удалить только один ключ. Просто откройте его в редакторе и удалите оскорбительную строку. Число после двоеточия в сообщении об ошибке - номер строки, поэтому это строка для удаления - строка 1 в вашем примере ..

1
задан 3 December 2013 в 02:38

6 ответов

В Unicode очень мало методов:

GNU sed 4.2.2 works:

$ echo "Idą gęsi łąką" | sed 's/.*/\U&/'
IDĄ GĘSI ŁĄKĄ

bash 4.2.45 объявить работает work:

$ typeset -u ucase; ucase="Idą gęsi łąką"; echo $ucase
IDą GęSI łąKą

bash 4.2.45 расширение параметра не работает:

$ str="Idą gęsi łąką"; echo ${str^^}
IDą GęSI łąKą

bash 4.3.42 declare и параметр расширение не :

$ declare -u ucase
$ ucase="Idą gęsi łąką"
$ echo $ucase
IDĄ GĘSI ŁĄKĄ
$ echo ${ucase,,}
idą gęsi łąką

GNU tr 8.20 не работает:

$ echo "Idą gęsi łąką" | tr '[:lower:]' '[:upper:]'
IDą GęSI łąKą
[d14 ] mawk (по умолчанию awk в Ubuntu 13.10) работает не :

$ echo "Idą gęsi łąką" | mawk '{print toupper($0)}'
IDą GęSI łąKą

gawk works:

$ echo "Idą gęsi łąką" | gawk '{print toupper($0)}'
IDĄ GĘSI ŁĄKĄ

Perl pure uc () делает works work:

$ echo "Idą gęsi łąką" | perl -ne 'print uc($_);'
IDą GęSI łąKą

Python 2 без подсказок Unicode не работает:

$ echo "Idą gęsi łąką" | python -c 'import sys; print sys.stdin.read().upper(),'
IDą GęSI łąKą

Python 2, когда ему поручено работать с Unicode not :

$ echo "Idą gęsi łąką" | python -c 'import sys; print sys.stdin.read().decode("utf-8").upper(),'
IDĄ GĘSI ŁĄKĄ

Python 3 works:

$ echo "Idą gęsi łąką" | python3 -c 'import sys; print(sys.stdin.read().upper(), end="")'
IDĄ GĘSI ŁĄKĄ
38
ответ дан 24 May 2018 в 14:47
  • 1
    В Ubuntu 13.04 у меня есть gawk как awk по умолчанию (как показано на update-alternatives --display awk). Вы уверены, что mawk является значением по умолчанию в 13.10? – kiri 28 December 2013 в 04:10
  • 2
    sed s с 1990 года поддерживали опцию \U ;-). Не особенность gnu-sed. В противном случае, отличный ответ, так много вариантов, так мало времени ;-) Удачи всем! – shellter 14 October 2014 в 05:28
  • 3
    Кроме того, будут возникать проблемы с турецким (точка и без точек i), для более подробного просмотра следующих ссылок: - unicode.org/Public/UNIDATA/SpecialCasing.txt - stackoverflow.com/ вопросы / 23524231 / & hellip; - ru.wikipedia.org/wiki/Dotted_and_dotless_I – azat 10 December 2014 в 04:07
  • 4
    В вашем примере кошелек uc не работает в Perl, потому что вы должны use Encode или use utf8. Перепишите свой пример как echo "Idą gęsi łąką" | perl -ne 'use Encode;print encode("utf-8",uc(decode("utf-8",$_)))', и он будет работать. Также см. stackoverflow.com/a/13261662/3701431 – Sergiy Kolodyazhnyy 10 June 2017 в 02:38

Я бы использовал команду bash internal typeset или declare для определения строчной переменной.

$ typeset -l lcase
$ lcase="LoWeR cAsE"
$ echo $lcase
lower case

Символы опущены, когда значение установлено, а не когда вы набираете переменную. Так что лучше набирать в начале скрипта. Для верхнего регистра вы можете набирать .

$ typeset -u ucase
$ ucase="Upper cAsE"
$ echo $ucase
UPPER CASE

Это не относится к оболочке bash, которая работает также и в ksh, возможно, в определении оболочки POSIX.

] EDIT: Многие люди нежно указали на то, что набор слов теперь считается устаревшим на bash и заменен на declare . Обе команды эквивалентны.

$ help typeset
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
    Set variable values and attributes.

    Obsolete.  See `help declare'.


$ help declare
declare: declare [-aAfFgilrtux] [-p] [name[=value] ...]
    Set variable values and attributes.

Это не относится к оболочке bash, которая работает также и в ksh, возможно, в определении оболочки POSIX.

20
ответ дан 24 May 2018 в 14:47
  • 1
    +1 Невероятно, я никогда не знал этого! b.t.w. дополнительная информация: я просмотрел это в руководстве, и кажется, что typeset считается лишенным и заменен на declare – thom 28 November 2013 в 22:15
  • 2
    @thom спасибо, кажется, что bash начал иметь жизнь далеко от своих «корневых оболочек корней», :) – Emmanuel 28 November 2013 в 22:34

Вы можете сделать это с помощью команды tr.

В терминале (Ctrl + Alt + T)

Эта команда:

echo 'String here' | tr "[:lower:]" "[:upper:]"

] будет преобразовывать строчные буквы в верхний регистр.

echo 'STRING HERE' | tr "[:upper:]" "[:lower:]"

преобразует прописные буквы в нижний регистр.

Пример:

Кредит переходит к кибернетичности

16
ответ дан 24 May 2018 в 14:47
  • 1
    Если вам не нравятся локали, tr A-Z a-z будет работать. – kundor 28 November 2013 в 22:47

Вы также можете передавать вещи через sed:

$ echo lowercase | sed 's/.*/\U&/'
LOWERCASE

И \L будет иметь противоположный эффект:

$ echo UPPERCASE | sed 's/.*/\L&/'
uppercase
9
ответ дан 24 May 2018 в 14:47

Это не чистое решение bash, но вы можете транслировать свои строки через perl (как сделал Оли с sed):

$ echo lowercase | perl -ne 'print "\U$_"'
LOWERCASE

И \L будет иметь противоположный эффект:

$ echo UPPERCASE | perl -ne 'print "\L$_"'
uppercase
1
ответ дан 24 May 2018 в 14:47

Используйте эту простую команду. В верхнем и нижнем регистре. Где «f» - это имя файла, в котором вы хотите выполнить преобразование.

tr "A-Z" "a-z" < f

Для нижнего к верхнему регистру

tr "a-z" "A-Z" < f
-1
ответ дан 24 May 2018 в 14:47

Другие вопросы по тегам:

Похожие вопросы: