Распечатать только строки, которые со всеми цифрами, кроме последнего или последних двух символов или первых или второго символа

В качестве альтернативы вы можете открыть окно настроек клавиатуры и назначить пользовательскую комбинацию клавиш для команды gnome-session-quit --power-off, которая вызовет меню выключения. Я настроил его на срабатывание по Super+q.

0
15.12.2018, 23:04
3 ответа
$ grep -Ex '[[:digit:]]+(.|[^[:digit:]]{2})' file1
1234567a
2245678902da

Расширенное регулярное выражение [[:digit:]]+(.|[^[:digit:]]{2})будет соответствовать одной или нескольким цифрам, за которыми следует либо неопределенный символ, либо две не -цифры (это буквальная интерпретация вашей спецификации "начинается с числа, но заканчивается на любой символ на последнем или двух последних символах, который не является цифрой " ). Параметр -xдля grepгарантирует, что совпадение будет по всем строкам.

Обратите внимание, что эта буквальная интерпретация того, что вы указали, также соответствует строкам, содержащим только цифр.

С

$ grep -Ex '[^[:digit:]]{1,2}[[:digit:]]+' file2
A1234
Ab1234

мы сопоставляем строки, которые начинаются с одной или двух цифр, отличных от -, а затем содержат одну или несколько цифр до конца строки.


Для визуального представления двух регулярных выражений (, а также в то же время показывая, как это сделать с помощьюsed):

Первый:

$ sed -nE 's/^([[:digit:]]+)(.|[^[:digit:]]{2})$/(\1)(\2)/p' file1
(234567)(a)
(2245678902)(da)

Второй:

$ sed -nE 's/^([^[:digit:]]{1,2})([[:digit:]]+)$/(\1)(\2)/p' file2
(A)(1234)
(Ab)(1234)

Удалите все круглые скобки из команды sed, чтобы получить решение sed.

3
28.01.2020, 02:23

Немного другая интерпретация. Я прочитал это, так как последние 1 -2 символа не могут быть цифрами, поэтому я получаю

grep -E '^[[:digit:]]+[^[:digit:]]{1,2}$' file
1234567a
2245678902da
0
28.01.2020, 02:23

Для первого вопроса ниже указана команда

sed -n '/^[0-9]*[a-z]\{,2\}$/p' filename

выход

1234567a
2245678902da

Для второго вопроса ниже команда

 sed -n '/^[A-Za-z]\{1,2\}[0-9]*$/p'

выход:

A1234
Ab1234
0
28.01.2020, 02:23

Теги

Похожие вопросы