Regex к grep заполнителю, сопровождаемому плаванием со знаком

Отключите "shutdown/reboot/poweroff/halt/hostname", как команды в критически важных серверах

chmod 0 /sbin/shutdown

затем, если вам нужно использовать его, chmod верните его обратно в chmod 0755.

0
07.10.2014, 23:16
2 ответа

Привязать выражение к концу строки:

grep -E "\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$"

Если вы добавите опцию PCRE в -o для возврата только захваченной группы, вы увидите, что ваш пример совпадает и возвращает желаемое совпадение:

grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$)"

-146. 17516

- слишком, чтобы поймать совпадение для строк в файле с необязательным, трейлинговым пробелом, просто добавьте \s* в виде:

grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}\s*$)"
4
28.01.2020, 02:17

Перед первым регенерацией с пробелом:

grep -E "\s+-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}"

следует выполнить трюк, так как он исключает совпадение в начале строки.

Если вы хотите, чтобы только 4-й столбец, вы можете легко добиться этого, используя либо GNU sed:

sed -r 's/^\S+\s+\S+\s+\S+\s+(\S+)(\s.*|)$/\1/'

, где \s - любой символ пробела (пробел, табуляция и различные "feeds"1) и \S - символ без пробела, либо (гораздо более чистым способом) с sed | cut:

sed 's/\s\+/\t/g' | cut -f4

, которая сначала сжимает все пробелы в одну закладку, а затем использует cut для вырезания четвертого столбца. Это также позволяет легко выбирать больше колонок, например, с помощью cut -f1,4 и так далее.

1) То есть: подача формы, подача линии, возврат каретки, хотя средняя обычно интерпретируется sed как разделитель линий.

1
28.01.2020, 02:17

Теги

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