LINUX.ORG.RU

Задать язык для sed

 , ,


0

1

Почему sed - потому что нужно будет производить операции и это удобнее через sed. Есть старый распознанный скан, где каким то чудом перемешана кирилица и латиница, т.е. в одном слове могут быть и те, и те буквы. Можно ли седнуть так, чтобы выдать только слова, где есть хотя бы 1 буква латиницы? Файл предварительно разбит на строки по 1 слову для удобства обработки. Пробую так

echo $LANG
en_US.UTF-8
sed -nr '/[a-Z]+/p' file
LC_ALL=C sed -nr '/[a-Z]+/p' file
LC_ALL=en_US sed -nr '/[a-Z]+/p' file
Получаю все равно все слова, даже чисто на кирилице. Пробовал и инверсию через !p. Без цикла на проверку каждой буквы можно как то это решить?

P.S. Я в курсе про замену через y/, но мне и сами слова нужны.



Последнее исправление: Velikan (всего исправлений: 2)

Что-то не так у вас с седом, УМВР

$ echo -e "foo\nпроверка\nещеоднапроверqа" | sed -nr '/[a-Z]+/p'
foo
ещеоднапроверqа
micronekodesu ★★★
()

Почему sed — потому что нужно будет производить операции и это удобнее через sed.
Пробую так
Получаю [чушь]

ЧТД.

Zmicier ★★★★★
()

Если не нужно именно слов, а только строки с латинскими буквами, то так:

$ LC_ALL=en_US.UTF-8 echo -e "WS\nWЫ\nЯЮ" | sed -nr '/[a-Z]/p'
WS
WЫ

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
$ LANG=en_US.utf8 sed -nr '/[a-Z]+/p' file
sed: -e expression #1, char 8: Invalid range end
$ LANG=ru_RU.utf8 sed -nr '/[a-Z]+/p' file
вапвпqwerвапвпва
anonymous
()

А почему именно sed ? grep не устроит ?

grep [a-Z] file --color

anonymous
()
Ответ на: комментарий от Velekan

Топикстартер Velikan обозначил 2 критерия:

Можно ли седнуть так, чтобы выдать только слова, где есть хотя бы 1 буква латиницы?

Файл предварительно разбит на строки по 1 слову для удобства обработки.

$ LC_ALL=en_US.UTF-8 echo -e "WS\nWЫ\nЯЮ" | sed -nr '/[a-Z]/p'
WS
WЫ

Где что не так?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.