У меня есть текстовый файл, в котором некоторые слова напечатаны ВСЕМИ ЗАГЛАВНЫМИ буквами. Я хочу иметь возможность просто преобразовать все в текстовом файле в нижний регистр, используя sed
. Это означает, что первое предложение будет гласить: «У меня есть текстовый файл, в котором некоторые слова напечатаны заглавными буквами».
131
tr
команде? Иногда это более подходит, чемsed
.Ответы:
С
tr
:Работает с использованием GNU
sed
(BSDsed
не поддерживает\L
\U
):источник
sed -e 's/.*/\L&/' input.txt > output.txt
для GNU sed тоже отлично работаетman sed
чтобы узнать, какую версию вы используете.U
перед каждой строкойЕсли у вас есть расширения GNU, вы можете использовать команду sed \ L (полное нижнее совпадение или до тех пор, пока не будет достигнуто \ L [нижнее] или \ E [конец - отключить регистр]), например:
Примечание. '&' Означает полное соответствие шаблону.
В качестве примечания, расширения GNU включают \ U (верхний), \ u (верхний следующий символ совпадения), \ l (нижний следующий символ совпадения). Например, если вы хотите переписать предложение:
Примечание: поскольку предполагается, что у нас есть расширения GNU, мы также можем использовать опцию dash-r (расширенные регулярные выражения), которая позволяет использовать \ w (символ слова) и избавляет вас от необходимости избегать скобок захвата и одного или нескольких квантификатор (+). ( За исключением:
\W [non-word], \s [whitespace], \S [non-whitespace]
поддерживаются также с тире-р, но\d [digit]
и\D [non-digit]
не являются.)источник
sed -ri 's/MATCH_WHATEVER/\L&/i' input-file.ext
- использование/i
модификатора делает совпадение нечувствительным к регистру и, следовательно, является необязательным.-i
Переключатель указывает СЭД , чтобы изменить файл в месте. Нет необходимости перенаправлять вывод в другой файл, если вам это не нужно.\E [end - toggle casing off]
. Спасибо !Вы также можете сделать это очень легко
awk
, если хотите рассмотреть другой инструмент:источник
tolower
не смогу справиться,À
напримерls | awk '{print "mv " $0 " " tolower($0)}' | sh
Вот много решений:
В upercaser с perl, tr, sed и awk
Строчные буквы с помощью perl, tr, sed и awk
Сложный bash в нижнем регистре:
Сложный bash в верхнем регистре:
Простой bash в нижний регистр:
Простой bash в верхнем регистре:
Обратите внимание, что $ {v,} и $ {v ^} изменяют только первую букву.
Вы должны использовать это так:
источник
Вывод:
источник
Мне нравятся некоторые ответы здесь, но есть команда sed, которая должна помочь на любой платформе:
Во всяком случае, это легко понять. И знание о команде y иногда может пригодиться.
источник
Если вы используете posix sed
Выбор шаблона для любого случая (преобразование искомого шаблона с помощью этого sed, чем использование преобразованного шаблона в требуемой команде с использованием регулярного выражения:
преобразовать в нижний регистр
то же самое для прописных букв, замените нижнюю букву между // на верхний эквивалент в sed
Радоваться, веселиться
источник
y//
изменить содержимое источника или пропустить поиск шаблона.коротко, мило и даже не нужно перенаправление :-)
источник