Это должно быть легко с помощью awk
.
$ awk -f script.awk file1.txt
snp1 snp1 1
snp1 snp2 0.3
snp1 snp3 0.4
snp1 snp4 0.5
snp2 snp1 0.3
snp2 snp2 1
snp2 snp3 0.4
snp2 snp4 0.5
snp3 snp1 0.4
snp3 snp2 0.4
snp3 snp3 1
snp3 snp4 0.5
snp4 snp1 0.5
snp4 snp2 0.5
snp4 snp3 0.5
snp4 snp4 1
Содержание script.awk
. Пропускаем первую строку и форматируем остальные по желанию.
$ cat script.awk
{
if (NR == 1) next;
print $1" snp1 "$2;
print $1" snp2 "$3;
print $1" snp3 "$4;
print $1" snp4 "$5;
}
Содержание file1.txt
$ cat test.txt
____ snp1 snp2 snp3 snp4
snp1 1 0.3 0.4 0.5
snp2 0.3 1 0.4 0.5
snp3 0.4 0.4 1 0.5
snp4 0.5 0.5 0.5 1
Таким образом, вы можете перенаправить вывод в новый файл.
awk -f script.awk file1.txt > file2.txt
Если вы хотите использовать экран для отображения чего-либо, вам понадобится терминал.
Если вы хотите только начать новый сеанс, но не отображать его, вызовите screen -m -d
. Сессия начнется в отсоединенном виде.
Если вы хотите взаимодействовать только с существующей сессией, используйте опцию -X
, чтобы послать команду этой сессии. Это не прикрепляется к сеансу и не требует наличия терминала. Обратите внимание, что если экранная сессия была запущена в отделенном режиме, ее начальное окно не активно, поэтому вам, вероятно, придется выбрать окно с помощью -p
, прежде чем что-либо делать, например
screen -d -m long-running-command
screen -p 1 -X stuff 'yes^M'
Что бы вы ни делали, вы, вероятно, захотите использовать воспроизводимое имя сессии и всегда передавать опцию -S
, чтобы знать, с какой сессией вы разговариваете.