LINUX.ORG.RU

Вывод английских и русских букв с помощью grep

 ,


0

1

Есть строчка в которой сразу записаны и русские и английские буквы, нужно вывести и те и те, пробывал делать grep -o '[Aa-Zz]*' и, естественно, оно выводило только английские буквы, помогите.

$ echo фффффffffфффф---ыавыа | grep -o '[[:alpha:]]*'
фффффffffфффф
ыавыа

Только это буквы на любом языке будет выводить.

xaizek ★★★★★
()
Ответ на: комментарий от RedMaun

Уже решил

И где решение (чтобы с одним и тем же вопросом не приходили, а решали ответ ответов из поиска)? И почему тема не отмечена решённой (чтобы не приходили с ответами ответов на вопрос)?

mord0d ★★★★★
()
Ответ на: комментарий от RedMaun

grep -o ‘[Aa-Zz][Аа-Яя]

Никогда так не делай!

grep -o '[A-Za-zА-Яа-я]*'

Соблюдай порядок символов в кодировке, иначе будешь ловить левые символы (например, у тебя по условию Z-a влезают некоторые символы, в ANSI и UTF-8 как минимум).

mord0d ★★★★★
()
Ответ на: комментарий от RedMaun

У меня с твоим примером GNU grep вообще отказывается работать (вполне закономерно):

 %  echo 'AOEGHZ{[aфUE1123aaeo-' | grep -o '[Aa-Zz]*[Аа-Яя]*'
grep: Invalid range end
 % 

На BSD grep проверять смысла не вижу: в плане логики в отношении кодировок там расхождения нет.

В твоём примере проблема состоит в том, что по условию рэнжа [Aa-Zz] ты хочешь A, от a до Z (вот только Z находится перед a) и z.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

У меня с моим примером все работает и даже твой пример работает, никаких ошибок, лол.

RedMaun
() автор топика
Ответ на: комментарий от mord0d

Может проблема в версии, у меня: grep (GNU grep) 3.3

RedMaun
() автор топика
Ответ на: комментарий от xaizek

Кстати годно, спасибо, только сейчас увидел

RedMaun
() автор топика
Ответ на: комментарий от mord0d

Однако:

echo 'AOEGHZ{[aфUE1123aaeo-' | grep -o '[Aa-Zz]*[Аа-Яя]*'
AOEGHZ
aф
UE
aaeo
И никаких Invalid range end.

grep (GNU grep) 3.3

mexx
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.