Вы можете сказать plymouth
, чтобы он показывал сообщения в виде текста так:
$ plymouth-set-default-theme text
$ /usr/libexec/plymouth/plymouth-update-initrd
У меня есть следующий код для вас; Ниже этого есть объяснение того, как он работает.
Сначала перейдите в рабочий каталог ( CD / USER / MYDATA /
), чтобы запустить эту программу:
awk '
FNR==1 { sample = FILENAME ; sub(/\.fasta/, "", sample }
/^>/ { target = substr($0,2)".fasta" ; next }
{ print ">" sample > target ; print > target }
' Sample_*.fasta
программа awk
Iterate по всему образец _ *. Fasta
файлы. При запуске каждого входного файла ( FNR == 1
) он извлекает имя образца из текущего имени файла, удалив суффикс ".fasta". Если строка начинается с >
>
, то целевое имя файла для этой записи взята из символа >
, а суффикс имени файла «.Fasta» добавлено. Для других типов строк ранее извлеченное имя образца записывается в целевой файл, а во второй строке текущие данные записаны.
Примечание. Если вы наблюдаете проблемы с «Слишком много открытых дескрипторов файлов», то лучший выбор - это выбору в GNU
, если это возможно!
Если GNU awk
нет или не может быть доступен на вашей платформе, вам нужна пара дополнительных изменений; Ключ заключается в том, чтобы закрыть каждый файл после его записи, используя функцию Close ()
функции, в результате чего вы должны добавить в закрытые файлы. (Это более сложный, а также менее исполнительный, поэтому стоит подумать о том, чтобы получить GNU awk
и использовать первый вариант.)
Эти изменения будут привести к тому, что в таком случае, как:
# because of the append operation you need to empty the file targets
# before calling subsequent awk code, e.g. by: rm -f AT???????.fasta
awk '
FNR==1 { sample = FILENAME ; sub(/\.fasta/, "", sample }
/^>/ { target = substr($0,2)".fasta" ; next }
{ printf ">%s\n%s\n", sample, %0 >> target ; close(target) }
' Sample_*.fasta
Обратите внимание, что до Вы называете программу
, вы должны убедиться, что удалили или пустые какие-либо существующие выводы из предыдущих вызовов (в противном случае ваш новый выход будет добавлен к данным, ранее существующим в соответствующем выходном файле.
Некоторые оболочки: это будет намного медленнее, чем неуклюжая программа.
cd /User/MyData
for sample in Sample*.fasta; do
sample_name=${sample%.fasta}
while read name; read data; do
name=${name#>}
printf ">%s\n%s\n" "$sample_name" "$data" >> "$name.fasta"
done < "$sample"
done
Хотя было бы интересно узнать, что вы пробовали до сих пор, вот пример того, как ERK
может быть использован для этой работы:
awk '
FNR == 1 {
sub(/\.fasta$/, "", FILENAME)
}
/^>/ && sub(/^>/, "") {
newfile = $0 ".fasta"
next
}
{
print ">" FILENAME >> newfile
print $0 >> newfile
}' Sample_*.fasta