Проблема решена!
top
показывает на -ядро загрузку ЦП, поэтому сумма процентов будет больше 100.
В то время как gnome-system-monitor
может отображать как на -ядро , так и на -ЦП . На самом деле есть опция (, подчеркнутая на скриншоте выше ), которая может изменить поведение.
Системы (обычно )имеют 1 ЦП с несколькими ядрами.
В моем случае у меня 1 процессор с 4 ядрами. На снимке экрана показана утилита нагрузки ЦП (stress
), работающая только на одном ядре --, одно ядро занято. Как видите, top
показывает процесс stress
на 100 % и другие процессы, то есть сумма будет больше 100. С другой стороны,gnome-system-monitor
с включенной подчеркнутой опцией показывает то же самое stress
обрабатывает на 25% (ровно одну четвертую часть top
использования ).
sed не имеет опережающих выражений, которые позволили бы вам красиво пропустить 7777. Но вы могли бы сделать это неуклюже, переместив все совпадения 7777 «в сторону» к какой-то строке, в которой вы уверены, что она нигде не встречается во входных данных..
Например, если вы знаете, что #7 #7 #7 #7 #не встречается во входных данных, вы можете использовать:
echo "1234 The few, 7777 the brave." | \
sed -e 's/7777/#7#7#7#7#/g' -e 's/[0-9]\{4\}/(&)/g' -e 's/#7#7#7#7#/7777/g'
чтобы получить
(1234) The few, 7777 the brave.
В качестве альтернативы:
echo "1234 The few, 7777 the brave." | sed -e 's/\([0-9]\{4\}\)/(\1)/g' -e 's/(\(7\{4\}\))/\1/g'
(1234) The few, 7777 the brave.
echo "A 1717 B 7777 C 7676 D" | sed -e 's/\([0-9]\{4\}\)/(\1)/g' -e 's/(\(7\{4\}\))/\1/g'
A (1717) B 7777 C (7676) D
echo "7777 foo 1234 bar" | sed -e 's/\([0-9]\{4\}\)/(\1)/g' -e 's/(\(7\{4\}\))/\1/g'
7777 foo (1234) bar