разбросать по переменным строку (shell)

Имхо по мне, проще использовать скрипт, больше свободы - не люблю длинных команд (да и морока их строить).

PS - и заметил, что есть нюансы при использовании длинных команд - высока вероятность увеличения времени испольнения.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Имхо по мне, проще использовать скрипт, больше свободы - не люблю длинных команд (да и морока их строить).
ну вроде не такая уж и длинная команда в итоге получается:
arr=($(ps -eo pid,size,comm -k size |tail -1)); arr[2]=${arr[@]:2}
ну а данные уже считывать с arr[0], arr[1], arr[2]

ну и как я уже писал выше, более чистый подход будет в es-shell, где в переменную name попадет всё то что соответствуя правилу: "Если в списке меньше переменных, чем значений, то последней переменной присваивается все оставшиеся значениям."
(pid mem name) = `{ps -eo pid,size,comm -k size|tail -1}
red
ну вроде не такая уж и длинная команда в итоге получается:
Смысл в том, что эту команду всеравно не запомнишь, придется ее откуда то копировать, а это все время ... лишний поиск.
Мне удобнее написать скриптик и поместить его в специальную директорию, а самые нужные и часто используемые забиндить.
Конечно, также можно поступать и с командами, храня их в отделном файле - в принципе я и это делаю, но использую это в качестве заготовок, чтобы меньше думать над новой командой.
Срипт еще удобнее и тем, что его легче править, что не сказывается на запуск команды. Но это, конечно, дело вкуса.
Ошибки не исчезают с опытом - они просто умнеют
кстати, где-то встречал что awk умеет вариант типа print $2..$END , только вероятно это умеет какой-то форк awk ?
А вообще awk очень удобен, например, в том же выводе ps -eo pid,size,comm нужно просуммировать колонку по size, но исключить 1-ую текстовую строку
ps -eo pid,size,comm | awk 'FNR>1 { SUM += $2 } END {print SUM}'
2556808
Ошибки не исчезают с опытом - они просто умнеют
red
можно передавать данные в awk с другим разделителем отличным от пробела
или добить с awk
ps -eo pid,size,comm --sort -size | awk 'NR==2 {PID=$1; SIZE=$2; $1=$2=""; COMM=$0; print PID, SIZE, COMM}'
 
Зарегистрироваться или войдите чтобы оставить сообщение.