Попробуйте заменить
Пока вы этим занимаетесь, я бы порекомендовал получить последнюю версию апстрима, которая исправляет неприятную ошибку с удаленными серверами Icecast:
Вероятно, awk
будет самым быстрым инструментом оболочки здесь. Вы можете попробовать:
awk "/$regex1/ { ++r1 }
/$regex2/ { ++r2 }"'
END { print "regex1:",r1 "\nregex2:",r2 }' <infile
Конечно, если вам нужно использовать perl
регулярные выражения, как ваш вопрос, то на самом деле perl
является единственным ответом. Однако awk
использует расширенные выражения (например, grep -E
) в отличие от базовых.
Только подтверждение как BowlOfRed и alexises указано. Вот визуальное представление трубопровода ps
и grep
назад к ps
снова, чтобы показать, как выполняются процессы трубопровода. Обратите внимание, что конечный ps x --forest
игнорирует входные данные, но сохраняет ранее обработанные процессы в рабочем состоянии, чтобы они отображались.
ps -ef | grep myprocess | ps x --forest
Фрагмент выходных данных:
25056 pts/3 Ss 0:05 \_ bash
12243 pts/3 R+ 0:00 | \_ ps -ef
12244 pts/3 S+ 0:00 | \_ grep --color=auto myprocess
12245 pts/3 R+ 0:00 | \_ ps x --forest
Notice bash находится в состоянии прерываемого сна S
(ожидание завершения события). s
указывает, что он является ведущим сеансом, как показано ниже.
С помощью опции -ef
можно также увидеть, что дочерние процессы выполняются с тем же родительским идентификатором, который является идентификатором процесса bash
, 25056
.
ps x | grep myprocess | ps -ef --forest
Отрывок выходных данных:
UID PID PPID C STIME TTY TIME CMD
iamuser 25056 16737 0 Dec23 pts/3 00:00:05 \_ bash
iamuser 12161 25056 0 05:02 pts/3 00:00:00 | \_ ps x
iamuser 12162 25056 0 05:02 pts/3 00:00:00 | \_ grep myprocess
iamuser 12163 25056 0 05:02 pts/3 00:00:00 | \_ ps -ef --forest
-121--65817- Частичный ответ от Program проектировать в среде UNIX :
(Часто одно свойство системы принимается как актив или как ошибка различными аудиториями; Наша аудитория - программисты, потому что среда UNIX предназначена в основном для программирования. )