2016-11-14 2 views
0

У меня есть 3 Fasta файлы, такие как следующиеобъединения нескольких файлов в одной строке в Linux

>file_1_head 
haszhaskjkjkjkfaiezqbsga  
>file_1_body 
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja  
>file_1_tail 
mnnbasnbdnztoaosdhgas 

Я хотел бы объединить их в один, как следующий

>file_1 
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas 

Я попытался с помощью команды кошки cat file_1_head.fasta file_1_body.fasta file_1_tail.fasta но он не объединяется в одну строку, как показано выше. Возможно ли это с помощью «awk». Прошу вас уведомить меня.

+1

Это тривиальная задача. Что вы пытались решить самостоятельно? – hek2mgl

+0

@ hek2mgl То, что я пробовал, я упомянул в своем вопросе. Я попробовал команду «cat», но он просто помещает все строки в новую строку. Просьба проверить его – Chudar

+0

Да, я читал это. Но я пропущу что-то, что вы попытались * решить * проблему – hek2mgl

ответ

3

Означают ли вы ваши три файла имеют содержание

file_1_head.fasta

>file_1_head 
haszhaskjkjkjkfaiezqbsga  

file_1_body.fasta

>file_1_body 
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja  

и file_1_tail.fasta

>file_1_tail 
mnnbasnbdnztoaosdhgas 

включая имя каждого из них в них в качестве первой строки?

Тогда вы могли бы сделать

(echo ">file_1"; tail -qn -1 file_1_{head,body,tail}.fasta | tr -d "\n\t ") > file_1.fasta 

получить file_1.fasta в

>file_1 
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas 

Это также устраняет некоторые дополнительные пробелы в конце строк в вашем входе, что я получил, когда я скопировал их дословно.

1

Вы можете сделать это просто с

cat file1 file2 file3 | tr -d '\n' > new_file 

tr удаляет символ новой строки.

EDIT:

Для конкретной первой линии вобще

echo file_1 > new_file 
cat file1 file2 file3 | tr -d '\n' >> new_file 

Первая команда создает файл с одной строкой file_1 в нем. Затем команда cat... просто присоединяется к этому файлу.

+0

Спасибо. Но ваша команда дает мне вывод, как показано ниже: file_1haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwwwwweiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas. Мне нужен выход, как указано выше. – Chudar

+0

Отредактировал свой ответ. – fancyPants

+0

Я пробовал, но он не работал. – Chudar

1

Как насчет этого?

awk 'BEGIN { RS=""} {for (i=1;i<=NF;i++) { printf "%s",$i } }' f1_head f1_body f1_tail 
Смежные вопросы