Concatenate lines between lines starting with a specific pattern


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Concatenate lines between lines starting with a specific pattern

Hi,

I have a file such as:
---
>contig00001 length=35524 numreads=2944
gACGCCGCGCGCCGCGGCCAGGGCTGGCCCA
CAGGCCGCGCGGCGTCGGCTGGCTGAG
>contig00002 length=4242 numreads=43423
ATGCCGAAGGTCCGCCTGGGGCTGG
CGCCGGGAGCATGTAGCG
---
I would like to concatenate the lines not starting with ">" (concatenate any lines between lines starting with ">"). My wanted output is:
---
>contig00001 length=35524 numreads=2944
gACGCCGCGCGCCGCGGCCAGGGCTGGCCCACAGGCCGCGCGGCGTCGGCTGGCTGAG
>contig00002 length=4242 numreads=43423
ATGCCGAAGGTCCGCCTGGGGCTGGCGCCGGGAGCATGTAGCG
---

Thanks



---------- Post updated at 01:54 PM ---------- Previous update was at 01:48 PM ----------




I have tried like this:
% awk '{if(substr($0,1)==">") print $0"\n";else printf("%s",$0);}' test2.fna | fold -w60
But my output looks like:
Code:
>contig00001 length=35524   numreads=2944gACGCCGCGCGCCGCGGCC
AGGGCTGGCCCACGGCCcTCTTCCGGCGCGCTGCGCAGGCGTTCGGCCAGGCCGCGCGGC
GTCGGCTGGCTGAGCGCCCAGCGTAGCAGGCGATCGAACGGATGCCGACGGGCGCTTTCC
AGTCGTTCGCGCAAACGGGCGATCAACTGGGCGATCAACAGCGAGTCGCCGCCAGCCCCG
AAGAAGTCTTGCTCGACGCCCAGCGACGGGTTGTCCAGCACCTCCCGCCAGAGTGCCAGC

Instead of what I want which is like this:
Code:
>contig00001 length=35524   numreads=2944
gACGCCGCGCGCCGCGGCCAGGGCTGGCCCACGGCCcTCTTCCGGCGCGCTGCGCAGGCG
TTCGGCCAGGCCGCGCGGCGTCGGCTGGCTGAGCGCCCAGCGTAGCAGGCGATCGAACGG
ATGCCGACGGGCGCTTTCCAGTCGTTCGCGCAAACGGGCGATCAACTGGGCGATCAACAG
CGAGTCGCCGCCAGCCCCGAAGAAGTCTTGCTCGACGCCCAGCGACGGGTTGTCCAGCAC
CTCCCGCCAGAGTGCCAGC

# 2  
Try this:
Code:
awk '{printf (/>/)?RS"%s"RS:"%s",$0}END{print x}' infile

your code does not work because of this:
Code:
substr($0,1,1)

This User Gave Thanks to Scrutinizer For This Post:
# 5  
Quote:
Originally Posted by Scrutinizer
Try this:
Code:
awk '{printf (/>/)?RS"%s"RS:"%s",$0}END{print x}' infile

your code does not work because of this:
Code:
substr($0,1,1)

Hi Scruti ... ready for a nitpicking ? Smilie

Your code add an unexpected empty line if the input file start with a ">" line Smilie
# 6  
I know, but I figured it would complicate the code and it would not really matter. I did add the linefeed at the end, otherwise if the output gets written to a file, that last line becomes invalid, since the last line is not terminated with a linefeed..
Code:
awk '{printf />/?(NR>1?RS:x)"%s"RS:"%s",$0}END{print x}' infile

# 7  
Quote:
Originally Posted by Scrutinizer
I know, but I figured it would complicate the code and it would not really matter. I did add the linefeed at the end, otherwise if the output gets written to a file, that last line becomes invalid, since the last line is not terminated with a linefeed..
Code:
awk '{printf />/?((NR>1)?RS:x)"%s"RS:"%s",$0}END{print x}' infile

Dude, you're true, but i like to see your skill in action, that's why i challenged you Smilie
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Grep -v lines starting with pattern 1 and not matching pattern 2
demmel
Hi all! Thanks for taking the time to view this! I want to grep out all lines of a file that starts with pattern 1 but also does not match with the second pattern. Example: Drink a soda Eat a banana Eat multiple bananas Drink an apple juice Eat an apple Eat multiple apples I...... UNIX for Dummies Questions & Answers
8
UNIX for Dummies Questions & Answers
How to concatenate lines with specific pattern?
nixtime
How to concatenate lines with specific pattern? I have data dumped from a table into text file. In some occurrence the data row is split into two rows. Example: 12345678|Global Test|Global Test Task|My Request|Date|Date|Date|1|1| 12345679|Global Test2|Global Test Task2|My...... Shell Programming and Scripting
8
Shell Programming and Scripting
Awk, sed - concatenate lines starting with string
locoroco
I have a file that looks like this: John Smith http://www.profile1.com http://www.profile2.com http://www.profile3.com Marc Olsen http://www.profile4.com http://www.profile5.com http://www.profile6.com http://www.profile7.com Lynne Doe http://www.profile8.com http://www.profile9.com...... Shell Programming and Scripting
3
Shell Programming and Scripting
Delete multiple lines starting with a specific pattern
Zurd
Hi, just tried some script, awk, sed for the last 2 hours and now need help. Let's say I have a huge file of 800,000 lines like this : It's a tedious job to look through it, I'd like to remove those useless lines in it as there's a few thousands : Or to be even more precise : if line1 =...... Shell Programming and Scripting
6
Shell Programming and Scripting
delete lines starting with a pattern
yashwantkumar
i have a file sample.txt containing i want to delete lines starting with 123 neglecting spaces and tabs. but not lines containing 123. i.e. i want files sample.txt as help me thanxx... Shell Programming and Scripting
4
Shell Programming and Scripting