не будучи желаем вывод с командой сокращения?

За исключением того убеждения, чувствуя, что я должен обновить компьютеры, я не видел бы оснований для спешки. Для домашнего использования безопасность не является так большой частью беспокойства... Вы выполняете те машины как какие-то серверы? Так или иначе 24 дня ни на что не похожи, так не волнуйтесь слишком много об этом. Быть из поддержки точно так же, как обновления установки остановки. Это не означает, что вещи начнут повреждаться (они уже повредились бы), или уязвимости начнут появляться (они уже были там). Это - просто вопрос, если кто-то смотрит и ожидать использования, которое будет обнаружено в тот крошечный период времени и начнет атаку против Вас. Необходимо ли спросить себя, серьезно, Вы знаете такого человека?

3
09.04.2013, 16:07
2 ответа

С -d " ", разделитель полей - один (и только один) пробел. Вопреки разделению слова оболочки, cut не рассматривает располагают с интервалами несколько отличающийся, чем какой-либо другой символ. Так cut -d " " -f2 возвраты "" в root   19, точно так же, как это возвратилось бы "" для cut -d: -f2 в root:::19.

Вам были бы нужны к любому сжатию пробелы для преобразования любой последовательности пространства в одно пространство:

ps aux | grep ata | tr -s ' ' | cut -d ' ' -f2

Или используйте awk где в его режиме плевания значения по умолчанию, это не использует разделитель, но разделяет на список последовательностей несимволов пробела:

ps aux | awk '/ata/{print $2}'

В этом случае, хотя, можно хотеть использовать:

pgrep -f ata

Или по крайней мере:

ps -eo pid= -o args= | awk '/ata/{print $1}'

Соответствовать против аргументов только.

6
27.01.2020, 21:10
  • 1
    Было бы удобно для cut чтобы иметь подстановочный знак располагают аргумент с интервалами... (Т.Е. сокращение-d '\s*') –  Eddie B 27.04.2017, 17:24
  • 2
    @EddieB, Вы используете tr для этого tr -s '[[:space:]]' '[\t*]' | cut ... или используйте awk. –  Stéphane Chazelas 27.04.2017, 17:31

Использование:

ps aux | awk '/ata/{print $2}'

cut команда, которую Вы используете, не дает желаемый вывод, поскольку существует больше чем одно пространство между столбцами.

3
27.01.2020, 21:10
  • 1
    FWIW, поля, разделяемые переменным количеством пробела, является одним из нескольких случаев, где удары awk сокращали для регулярного полевого извлечения. Сокращение более полезно в общем случае, но это не обрабатывает мультисимвольные разделители (особенно переменной длины) очень хорошо вообще. –  Bratchley 09.04.2013, 17:55
  • 2
    @JoelDavis, GNU или busybox cut может не обработать разделители многобайтового символа, но другой как toolchest's семейной реликвии, или ksh93 встроенные делают. Так же некоторые awk реализации как mawk не поддерживайте многобайтовые символы очень хорошо (попытка mawk -F'[áóíúýé]' '{print $2}' например) –  Stéphane Chazelas 10.04.2013, 02:15

Теги

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