Не экранируется точка в условии ИЛИ
Подскажите, пожалуйста. Не работает установка разделителя в awk. Выражение
echo один,два.три | awk -F"(\.)" '{print "1="$1, "2="$2}'
работает корректно, но если добавить в разделитель, например, запятую, то работать перестаёт...
echo один,два.три | awk -F"(\.|,)" '{print "1="$1, "2="$2}'
В чём причина? Само регулярное выражение (.|,) ведь корректно.
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Для начала, то, что вы хотите, в данном случае пишется проще:
$ echo один,два.три | awk -F '[,.]' '{print "1="$1, "2="$2}'
1=один 2=два
$
В вашем же коде вы используете двойные кавычки, которые могут проглатывать экранирование. Помимо этого надо помнить, что Awk; принимает вашу строку и скармливает её своему парсеру регекспов, а значит надо экранировать дважды:
$ echo один,два.три | awk -F '(\\.|,)' '{print "1="$1, "2="$2}'
1=один 2=два
$
См. также: