awk
+grep
раствор:
awk '/^[^>0-9]/{
m = ""; cmd = sprintf("grep -m1 %s file2", $0);
cmd | getline m; close(cmd);
if (m) next;
}1' file1
cmd
-критическая grep
команда m
-переменная, заполненная возможным совпадающим элементом Выход:
1
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGTTTTTTTTT
2
3
4
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCCGTCCGTAG
Это то, что нужно:
mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""
Объяснить:Нам нужно запустить две команды (, а может и другие)
ffmpeg -i $name -acodec copy output.mp4
read -p'Press Enter to quit'
Объединив их вместе с bash -c
bash -c "ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'"
В контексте терминала mate -нам нужно экранировать обе двойные кавычки:
bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\"
mate -terminal -e принять единственный аргумент, который дает:
mate-terminal -e "bash -c \"ffmpeg -i $name -acodec copy output.mp4;read -p'Press Enter to quit'\""
Безусловно, сеанс терминала — это не совсем то же самое, что оболочка. Оболочка — это интерпретатор команд, сеанс терминала открывает новый виртуальный терминал, который запускает оболочку [интерпретатор команд]. Вы также можете просмотреть окно терминала — это необязательная оболочка оболочки, которая позволяет вам видеть вывод и потенциально взаимодействовать с оболочкой. Окно обычно закрывается, когда оболочка, в которой оно запущено, завершает работу.
В этом случае вам может понадобиться интерактивная оболочка, которая может выполнять команду, а затем возвращать приглашение, чтобы вы могли дать ему новые команды. Для тире будет использоваться параметр -i
.
Кроме того, вы можете попросить эмулятор терминала оставить окно открытым, даже когда оболочка завершила выполнение команды и завершила работу (из-за отсутствия интерактивности ). Например, xterm
использует опцию -hold
, чтобы окно оставалось открытым.
Таким образом, чтобы применить это на примере xterm, вам понадобится такая команда:
xterm -hold -e ffmpeg -i "$name" -acodec copy output.mp4
Обратите внимание, что -e
должен быть последним аргументом для xterm
.