$ cat input.txt
Id sno1 lc1 sno2 lc2 sno3 lc3 sno4 lc4
RM1 98 ss1 88 ms1 78 gs1 45 rs1
RM2 23 ss2 44 ms2 98 gs2 15 rs2
RM3 45 ss3 100 ms3 33 gs3 10 rs3
RM4 45 ss4 45 ms4 12 gs4 11 rs4
$ cat row_max.awk
NR == 1 {
for (i = 1; i <= NF; i++) headers[i] = $i;
next
}
{
# find maximum value
max = $2
for (i = 4; i <= NF; i += 2) if ($i > max) max = $i;
# print row id
printf "%s", $1
# print all lc# column values (assuming the column
# after the max value sno# column)
sep = OFS
for (i = 2; i <= NF; i += 2) {
if ($i == max) {
printf "%s%s", sep, $(i + 1);
sep = ","
}
}
# print all column headers of the max value columns
sep = OFS
for (i = 2; i <= NF; i += 2) {
if ($i == max) {
printf "%s%s", sep, headers[i];
sep = ","
}
}
printf "\n"
}
$ awk -f row_max.awk input.txt
RM1 ss1 sno1
RM2 gs2 sno3
RM3 ms3 sno2
RM4 ss4,ms4 sno1,sno2
Я недавно столкнулся с этим беспорядком 'матрешки' с ssh+su+screen+rtorrent, таким образом, я думаю, что могу помочь.
Для достижения желаемых результатов, можно использовать;
sudo su -c "script /dev/null -c \"screen -r $2\"" $1
Путем Вы делаете, это теперь только запускается screen
после script
завершился (через exit
, и т.д.), и не имеет абсолютно никакого эффекта на Ваш screen
сессия. В методе выше, Вы запускаетесь screen
команда в script
сессия (script -c
). Отметьте завершенное (\") кавычки.
После этих слов Вы все еще делаете его неправильно. В использовании нет никакого смысла sudo
и su
вместе в этом контексте (я не могу думать ни о каком корректном контексте). Решение состоит в том, чтобы использовать один или другой на основе Вашей реализации.
sudo -u "$1" "script /dev/null -c \"screen -r $2\""
su "$1" -c "script /dev/null -c \"screen -r $2\""
Вся эта информация доступна через man
страницы (тип q для выхода). Как новичок, я нахожу их чрезвычайно полезными:
man su; man sudo; man script; man screen
Или просто попросите у программы справки:
su --help; sudo -h; script --help; screen --help
Кроме того, если кто-либо приезжает сюда для rtorrent совета, ответ:
su ${user} -c "script /dev/null -qc \"screen -dr ${session_name}\""
То, что Вы делаете:
script /dev/null
. Это выполняет интерактивную оболочку и помещает расшифровку стенограммы той сессии в /dev/null
.script
завершается и screen
запускается.Я не знаю, почему Вы пытаетесь использовать script
здесь, особенно когда Вы не хотите расшифровку стенограммы.
Используя su
в sudo
избыточно: sudo
уже имеет эту функциональность.
sudo -u "$1" screen -r "$2"