Запись в / dev / tty
не учитывает идентификатор процесса; у вас ничего не получится.
Хотя это одно и то же устройство , существуют разные файловые дескрипторы, которые процесс будет открывать на данном устройстве. В Linux вы можете управлять отдельными файловыми дескрипторами, если знаете идентификатор процесса, т. Е. / proc / PID / fd / 0 является стандартным вводом для процесса, идентификатор которого PID .
В вашем случае программа открывает устройство, и его файловый дескриптор также находится в / proc / PID / fd (но не так хорошо идентифицирован). Приложение могло «видеть» информацию о символической ссылке из этого каталога и манипулировать ею.
Если вы присмотритесь, все элементы в / proc / PID / fd имеют разные значения inode (потому что это разные файловые дескрипторы). Отображение записи в proc / PID / fd означает, что вы выполняете вывод для этого файлового дескриптора.
Но ssh не ожидает ввода с этого направления, не имеет возможности для дополнительных запросов - обходной путь, который вы используете, вероятно, лучшее, что вы можете сделать.
хэш % h
содержит данные, а массив @h
управляет порядком, в котором обнаружены элементы хэша. OTW, хеш-ключи будут выбраны в случайном порядке.
perl -F, -lane '
BEGIN{ $"=$,=","; }
push @{$h{"@F[-3..-1]"}}, $F[0];
$h[-1+keys %h] = "@F[-3..-1]";
END{ print @{$h{$_}}, $_ for @h; }
' yourcsvfile
sed -e '
:loop
$!N
s/^\(.*\)\(\(,[^,]*\)\{3\}\)\n\([^,]*\)\2$/\1,\4\2/
tloop
P;D
' yourcsvfile
sed \$G yourcsvfile | # we add a dummy line to signal last record has been processed
while IFS=, read -r -a A; do
var=${A[@]: -3:3}
var=${var// /,}
case $var in
"$prev" ) x=${x-}${x:+,}${A[0]} ;;
* ) case $prev in ?* ) echo "$x,$prev" ;; esac; prev=$var; x=${A[0]} ;;
esac
done
Вот для этого программа awk
:
#!/bin/awk -f
BEGIN {OFS = FS = ","}
{
gsub(/ +$/, "", $4)
field = $2","$3","$4
if (field in a)
a[field] = a[field]","$1
else
a[field] = $1
}
END { for (i in a) print a[i], i}
И бонусная программа на Python:
from collections import OrderedDict
records = OrderedDict()
for line in open('file1'):
field, key = line.strip().split(',', 1)
records.setdefault(key, []).append(field)
for key, fields in records.items():
print(','.join(fields + [key]))
результат:
aa,ee,ff,bb,cc,dd
xx,yy,11,22,33