Я хочу сделать это:
- запустите команду
- захватить вывод
- выберите строку
- выберите столбец этой строки
Как пример, скажем, я хочу получить имя команды из $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-го полей, но как я могу знать, особенно когда выход переменный и неизвестный заранее.