Я хочу сделать это:
- запустите команду
- захватить вывод
- выберите строку
- выберите столбец этой строки
Как пример, скажем, я хочу получить имя команды из $PID
(обратите внимание, что это всего лишь пример, я не предполагаю, что это самый простой способ получить имя команды из идентификатора процесса - моя реальная проблема связана с другой командой, выходной формат которой я не могу контролировать).
Если я запустил ps
, я получаю:
PID TTY TIME CMD
11383 pts/1 00:00:00 bash
11771 pts/1 00:00:00 ps
Теперь я делаю ps | egrep 11383
и получаю
11383 pts/1 00:00:00 bash
Следующий шаг: ps | egrep 11383 | cut -d" " -f 4
. Выход:
<absolutely nothing/>
Проблема заключается в том, что cut
разрезает вывод одиночными пробелами, а поскольку ps
добавляет некоторые пробелы между вторым и третьим столбцами, чтобы сохранить некоторое сходство с таблицей, cut
выбирает пустую строку. Конечно, я мог бы использовать cut
для выбора 7-го, а не 4-го полей, но как я могу знать, особенно когда выход переменный и неизвестный заранее.