Вы можете изменить интервал top
(по умолчанию 3 секунды) в пределах top
: нажмите d и введите 0,1
Введите . Теперь интервал top
установлен на 0,1 секунды.
Если вы хотите, чтобы внутри верхнего уровня был только процесс firefox, выполните следующее:
top -p <pid_of_the_processes>
Выберите то, что вам нравится:
awk
раствор:
awk '/New/{ print substr($0, 1, 7), substr($0, length-9, 1) }' file1.txt
sed
раствор:
sed -rn '/New/ s/^(.{7}).*(.).{9}$/\1 \2/p' file1.txt
Пример вывода (для обоих подходов):
1234567 x
3456789 y
5678901 z
Это одно из «жестоких» gawk
решений, которое выполняет свою работу, используя null
в качестве разделителя полей FS
и разделителя полей вывода OFS
, что означает, что каждый символ входного файла считается полем для awk.
awk '/New/{print $1,$2,$3,$4,$5,$6,$7," ",$(NF-9)}' FS="" OFS="" file1
1234567 x
3456789 y
5678901 z
Далее последуют другие решения с grep / sed.
POSIXly:
Предполагая, что строки содержат не менее 10 символов (, если нет, то поведение не указано для второй substr()
, вы можете добавить && length >= 10
или && length >= 17
после /New/
, чтобы пропустить строки с меньшим количеством символов. чем 10 или 17 символов):
awk '/New/ {print substr($0, 1, 7), substr($0, length - 9, 1)}'
или при условии, что строки содержат не менее 17 символов (строки, которые не содержат, будут пропущены):
sed -n '/New/ s/^\(.\{7\}\).*\(.\).\{9\}$/\1 \2/p'
Для разнообразия, решение только для bash. При обработке нескольких строк в файле sed и awk обычно являются лучшими инструментами, но bash справится с этой задачей. Расширения строковых переменных здесь удобны.
while IFS= read -r line
do
# Check the line length.
# This could be whatever test defines an irrelevant line.
if [ "${#line}" -lt "25" ]
then
continue
fi
printf '%s\n' "${line:0:7} ${line: -10:1}"
done < file1.txt
Выход
1234567 x
3456789 y
5678901 z