Вот один из способов:
top -n 1 -c | sed '1,7d' |
awk '1;k=system("grep -Eo \"c[0-9]{1,5}\" /proc/$1/mounts | sort -u")'
Программа awk
сначала выведет каждую из своих входных строк (1;
), затем выполнит grep -E
на файле /proc/PID/mounts
. Поскольку top
возвращает поля, разделенные пробелами, $1
будет PID.
Поскольку вы используете awk
, больше нет причин использовать sed
. Также, вероятно, вы захотите использовать top -b
, чтобы получить все и избежать артефактов из-за цветовых экранов ANSI и тому подобного:
top -n 1 -bc |
awk 'NR<7{next}1;k=system("grep -Eo \"c[0-9]{1,5}\" /proc/$1/mounts | sort -u")'