Следующий скрипт должен быть протестирован на гораздо большего объема данных (более 4 строк) для проверки правильного выполнения этого оператора , если (((([1] <$ 3 && $ 4 <= [2]) || (A [1] <= $ 3 && $ 4
awk '
BEGIN{SUBSEP="-"}
{ if (($3, $4) in ids)
ids[$3,$4]=ids[$3,$4] "," $1
else
ids[$3,$4]=$1
}
END{ for (rng1 in ids) {
split (rng1,A,SUBSEP)
for (rng2 in ids) {
split (rng2,B,SUBSEP)
if ((A[1]<B[1] && B[2]<=A[2])||(A[1]<=B[1] && B[2]<A[2]))
ids[rng2]=ids[rng2] "," ids[rng1]
}
}
for (rng in ids) {
for (i=1;i<=split(ids[rng],D,",");i++)
a[D[i]]=1
s=k=""
n=0
for (j in a) {
k=k s j
s=","
n++
}
print rng, n, k
delete a
}
}' formatted.file
Вы можете попробовать некоторые значения с помощью XSET RACE RACK
. Эта команда позволит автоматически повторять, но вы можете следовать за ним на 2 номера. Первый - это количество MS перед запуском Auto-Repeat, вторая - количество повторов на секундах. Например:
xset r rate 300 20
Автоповторит начнется после 300 мс, затем повторится 20 раз в секунду.