Как скрыть PID и статус выхода при выполнении фоновой команды в терминале

Используя ваш file1.txt, как указано выше, и отредактированную версию вашего file2.txt(, так что в файле 2.txt есть несколько входных строк, где $5 находится в файле 1.txt):

AL157931.1      13      23551994        23552136        ENSG00000237491
HMGA1P6 13      23708313        23708703        ENSG00000230092
RNY3P4  13      23726725        23726825        ENSG00000207157

Читая file2.txt до file1.txt, мы можем получить следующий результат:

$ awk 'BEGIN {FS=OFS="\t"}
       NR==FNR {a[$5]=$1; next};
       $1 in a {$1=a[$1];print}' file2.txt file1.txt 
AL157931.1      1       714150  745440  2       1       143562
HMGA1P6 1       736259  745541  2       1       143562

Ключом к тому, как это работает, является понимание того, что мы хотим построить ассоциативный массив, в котором ключами являются $5 из файла2, а значениями являются $1 из того же файла.

Затем, когда мы перебираем файл1, проверяем, является ли $1 ключом в массиве. Если это так, замените $1 совпадающим значением (, то есть соответствующим $1 из файла2 ), и напечатайте строку.

0
28.11.2020, 19:01
1 ответ

Просто для упрощения то, что вы видите, является нормальным выводом, когда вы запускаете команду в фоновом режиме(&символ ). То же самое можно увидеть, если запустить эту упрощенную версию :

.
ls &

Чтобы не видеть этот вывод, вы можете заключить команду в круглые скобки:

(ls &)

Или, в вашем случае

(xdotool type "$(sed -n 1p file)" &)

В вашем конкретном случае кажется, что вам не нужен &, поэтому может быть проще удалить его из вашей команды:

xdotool type "$(sed -n 1p file)"

ПС

Если вы хотите запустить весь файл последовательно от начала до конца, вы можете сделать что-то вроде

x=0

, а затем для каждой строки запустите

x=$((x+1)); (xdotool type "$(sed -n "${x}p" file)" &)

Таким образом, вам не нужно каждый раз изменять номер.

Также взгляните на это :Как интерактивно запускать все команды в файле

2
18.03.2021, 22:46

Теги

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