ЦП и RAM monitorization родительским идентификатором

Если у вас GNU awk :

$ awk -vFPAT='[^,]*|"[^"]*"' '{ gsub("^\"|\"$","",$1); gsub("^\"|\"$","",$4); print $1 $4} '
prabhat,kumarbangalore,India

Формат вывода немного уродливый, так как я напечатал только $ 1 и $ 4 рядом друг с другом - уверен, вы можете переделать на свой вкус.

Если вам нужно сохранить двойные кавычки вокруг полей, удалите обе функции gsub (); .

Объяснение:

Обычно awk разделяет поля в записи содержимым переменной FS (Разделитель полей), которая по умолчанию использует любые пробелы (табуляция, пробел и новая линия). Разделитель сообщает awk , где заканчивается запись. В файле csv запись заканчивается запятой (передается в awk как -vFS =, ), но, конечно, в примерах, подобных вашему, это слишком просто и ломается.

В качестве альтернативы, FPAT (шаблон поля) определяет запись в awk . Вместо того, чтобы сообщать awk , где заканчивается запись, вы создаете определение, охватывающее всю запись. В сложном csv вашего примера это [^,] * | "[^"] * "

Это разбивается следующим образом: -

  • Символы, не являющиеся запятыми. ( [^,] ) столько раз, сколько возможно ( * ). Все, что находится между двумя запятыми, является полем.
  • Или ( | )
  • Одинарные двойные кавычки ( "), за которыми следует отсутствие двойных кавычек ( [^"] ), как можно больше раз ( * ), за которыми следует одинарная двойная кавычка ( "). Все, что заключено в двойные кавычки (включая запятую), считается одним полем.
1
02.04.2014, 12:17
1 ответ

Я должен использовать два дефиса для этого параметра, например

$ ps --ppid 1

Моя версия:

$ ps --version
procps-ng version 3.3.4
1
27.01.2020, 23:52

Теги

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