Отключите "shutdown/reboot/poweroff/halt/hostname", как команды в критически важных серверах
chmod 0 /sbin/shutdown
затем, если вам нужно использовать его, chmod верните его обратно в chmod 0755
.
Привязать выражение к концу строки:
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*$)"
Перед первым регенерацией с пробелом:
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
как разделитель линий.