Replace character string between new lines

Multi tool use
Multi tool use
The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP


Replace character string between new lines



I am trying to edit a file such that strings flanked by new lines are removed.



My file looks like:


ENSG00000000460_chr1.dat
varX data data data data data
varX data data data data data
varX data data data data data

ENSG00000005801_chr11.dat

ENSG00000006007_chr16.dat

ENSG00000006607_chr2.dat
varX data data data data data
varX data data data data data

ENSG00000010219_chr12.dat

ENSG00000011052_chr17.dat



The output I am trying to get would delete lines which are flanked by new lines (and delete the new lines) resulting in output which looks like:


ENSG00000000460_chr1.dat
varX data data data data data
varX data data data data data
varX data data data data data

ENSG00000006607_chr2.dat
varX data data data data data
varX data data data data data



I have tried various ideas in sed, but it either returns:


sed 's/[na-zA-Z0-9n]//g' file.txt | head
_.
. .- . . . . .
. .- . . . . .
-. .- . . . . .
-. .- . . . . .

_.

_.



I also tried:


sed 's/[n][a-zA-Z0-9][n]//g' file.txt | head



but this returns the file as is:


ENSG00000000460_chr1.dat
varX data data data data data
varX data data data data data
varX data data data data data

ENSG00000005801_chr11.dat

ENSG00000006007_chr16.dat

ENSG00000006607_chr2.dat
varX data data data data data
varX data data data data data

ENSG00000010219_chr12.dat

ENSG00000011052_chr17.dat





what is your try giving output.
– trighati
7 mins ago





I never worked with sed, but if it works like normal regex, then I dont understand why so many people do not understand the meaning of [ ].
– Fallenhero
7 mins ago


[ ]





[na-zA-Z0-9n] means: 1 of (n or letters or numbers)
– Fallenhero
6 mins ago


[na-zA-Z0-9n]





please look up what [ ] mean. because [^a-zA-Z0-9$] means any 1 symbol that is NOT a letter, number or $
– Fallenhero
3 mins ago


[ ]


[^a-zA-Z0-9$]




1 Answer
1



Could you please try following:


awk '/_chr/ && flag{flag=val=""} /_chr/{val=$0;next} val && NF && !/_chr/{if(val){print val;val=""};flag=1} flag;END{if(flag){print val}}' Input_file



Adding a non-one liner form of solution too now.


awk '
/_chr/ && flag{
flag=val=""
}
/_chr/{
val=$0;
next
}
val && NF && !/_chr/{
if(val){
print val
val=""
}
flag=1
}
flag
END{
if(flag){
print val}
}' Input_file





This does work! May I ask for an explanation as to what it's doing?
– Lynsey Hall
3 mins ago





@LynseyHall, on it, will add in few mins.
– RavinderSingh13
2 mins ago






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

u O hU YhkNlJUS8238umu8fh5eSbPR OTGvZTXe8UcSiFdAtJ7BG u1UwrAgKBTnz9UU 8wk3eWy,jbyzNq14aciC,SWFNubUt1HRzL
X5oLauMjqr9,W6IfvVRlQRtf,10i

Popular posts from this blog

Makefile test if variable is not empty

Will Oldham

Visual Studio Code: How to configure includePath for better IntelliSense results