Данный:
main_east_library
main_west_roof
main_north_roof
minor_south_roof
Как я могу использовать sed
(в частности, нет awk
, tr
и т. Д.) Для создания:
main_east_Library
main_west_Roof
main_north_Roof
minor_south_Roof
Что-то вроде:
$ echo "main_west_library
main_west_roof
main_north_roof
minor_south_roof" | sed 's_\3_upcase(\3)_'
Хотя это дает:
sed: -e expression #1, char 16: Invalid back reference
Ответы:
С GNU
sed
:С заглавной буквы третьей последовательности букв из каждой строки.
Прописать каждую третью последовательность букв в каждой строке:
Чтобы использовать каждую третью последовательность букв во всем вводе с помощью GNU
awk
:Или с
perl
:В то время как
[[:alpha:]]
класс символов может быть немного случайным в некоторых системах (например, в системах GNU, который включает в себя множество цифр, за исключением арабских (0123456789)), Perl\p{...}
основан на свойствах символов Unicode. Таким образом, они\p{alpha}
будут включать буквы во всех алфавитах, а также не буквенные алфавитные символы.Это не будет включать в себя объединение диакритических знаков, хотя это означает, что такие слова как
Stéphane
будут рассматриваться как два отдельных слова.Так что вы можете вместо этого:
Хотя это может в конечном итоге в том числе слишком много.
Также обратите внимание, что в отличие от GNU
sed
, Perl\u
будет правильно преобразовывать слова вродеfiddle
(гдеfi
один символ лигатуры) вFiddle
(2 символаF
иi
).источник
Perl
Он считает 2 последовательности символов, заканчивающиеся подчеркиванием, а затем прописными буквами следующий символ.
источник
Другой GNU
sed
:Это предполагает, что строка всегда начинается со слова.
источник