Как завершить запуск команды из скрипта через точку?

Предполагая, что вкладка -разделена файлом, вы можете использовать GNU awk:

gawk -F'\t' 'NR == FNR {count[$6][$4]++; next} length(count[$6]) > 1' file file
chr10   102979  103832  HSF1        305
chr10   102979  103832  HIF1AN  1   305
chr10   102979  103832  HSF1        305
chr10   103124438   103124851   HSF1        471
chr10   103124438   103124851   EGLN1   2   471

Это проходит через файл дважды :первый раз, чтобы подсчитать, сколько значений $4 встречается для каждых $6; второй раз для вывода записи, если для этих $6 имеется более 1 значения $4.

Вероятно, это можно было бы сделать за один проход за счет сложности, использования памяти и, возможно, потери исходного порядка.


Та же логика в perl

perl -Mautodie -e '
    open $f, "<", shift;
    while (<$f>) {
        @F = split /\t/;
        $c{ $F[5] }{ $F[3] }++;
    }
    # re-process the file
    seek $f, 0, 0;
    while (<$f>) {
        @F = split /\t/;
        print if scalar keys %{ $c{$F[5]} } > 1;
    }
' file
2
13.12.2020, 14:27
2 ответа

Это делает команда timeout. Например:

timeout 10m vlc /path/to/my.mp3

убьет его через 10 минут. См. справочную страницу для получения дополнительных опций (например, -kдля отправки сигнала уничтожения, чтобы убедиться, что программа больше не работает ).

2
18.03.2021, 22:43

Любовьtimeout

Альтернативное решение, близкое к исходному посту:

мой.ш:

#!/bin/bash
vlc /path/to/my.mp3 & # ADDED & <- will play the file in loop till I terminate it.
pid=$!
sleep 10
kill $pid

чмод:

chmod +x my.sh

Запустить:

./my.sh &
0
18.03.2021, 22:43

Теги

Похожие вопросы