1

Если я запускаю команду вроде:

watch "ps -ef | grep '^foo.*bar'"

и соответствующая выходная строка ps -ef является длинной строкой

foo <lots and lots of text here> bar

на вывод этой строки влияет размер терминала. Например, если терминал работает в полноэкранном режиме, и эта строка помещается на экране, вывод будет отображаться в режиме просмотра. Однако, если я уменьшу размер окна до половины размера экрана, чтобы полоса была обрезана от экрана, тогда строка grep полностью исчезнет (предположительно, строка обрезается до того, как она попадает в grep в конвейере). Это проблема, потому что я пытаюсь извлечь часть этой строки для последующего использования в конвейере.

Есть ли какое-либо решение для предотвращения влияния размера терминала на вывод команды grep в команде наблюдения?

2 ответа2

2

Это не grep, это ps. Добавьте параметр -ww (ps -efww), чтобы он всегда выводил полные строки.

1

Я не знаю, каковы правильные решения, но, похоже, это решает проблему,

watch "COLUMNS=160 ps -ef | grep '^foo.*bar'"

за счет того, что строки из PS сложены. Измените "160" на длину, достаточную для самой длинной строки «foo. * Bar», которую вы ожидаете увидеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .