Извлечь уникальную строку из каждой строки, содержащей

Вы можете получить количество файлов, открытых процессом, идентифицируемым PID, например 15232, выполнив:

ls -l /proc/15232/fd | wc -l

из списков Debian:

Я пытаюсь выяснить значение :

 /proc/$PID/fd/*
 

файлов.

Это ссылки, указывающие на открытые файлы процесса, чей pid это $PID. Fd означает «файловые дескрипторы», то есть целое число, которое идентифицирует любой программный ввод или вывод в UNIX-подобных системах.

Именно здесь команда lsof получает информацию, чтобы предоставить вам файлы процесса.

Это особенность ядра linux, не зависящая от дистрибутива.

0
26.09.2017, 21:44
4 ответа

Использованиеsed:

$ sed -n '/is the/s/^.*blah:\([0-9]*\);.*$/\1/p' file | sort -u
1
10
108636
1194996
4321
9876

Подстановка заменяет содержимое всех строк, содержащих строку is the, числом от blah:до ;. Строки, не содержащие строку, игнорируются.

3
28.01.2020, 02:13

Попробуйте это:

grep "is the" file | sed 's/.*blah://;s/;.*//' | sort -u

Пояснение:

  1. grepполучает все строки с " is the" (в любой части строки)
  2. sedудалите все до " :" и после " ;" (вместо этого вы можете использовать sed -e 's/.*blah://' -e 's/;.*//'для лучшего понимания)
  3. sortсортирует строки
0
28.01.2020, 02:13
cat file | grep "is the" | awk -F':' '{print $2}'|awk -F';' '{print $1}'|sort -u
0
28.01.2020, 02:13

Вы ищете директиву \K, чтобы забыть о том, что вы только что сопоставили.

grep -oP 'is the.*?blah:\K\d+'

Тогдаsort -u

5
28.01.2020, 02:13

Теги

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