Find to delete lines with pattern and even or odd number


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find to delete lines with pattern and even or odd number
# 1  
Old 02-18-2019
Find to delete lines with pattern and even or odd number

In the below directory I am trying to delete all lines with a .bam extention that have the pattern IonCode_ followed by an even number. I am also trying to delete all lines with a .fastq extention that have the pattern IonCode_ followed by an odd number. I was going to use find but can see all lines result with the code as is. Thank you Smilie.


Code:
IonCode_0281.bam     --- keep
IonCode_0282.bam     --- delete
IonCode_0281.fastq   --- delete
IonCode_0282.fastq   --- keep

Code:
find . -maxdepth 1 -type f -iname "IonCode_[02468]*.bam" #delete    --- remove even
find . -maxdepth 1 -type f -iname "IonCode_[13579]*.fastq" #delete    --- remove odd

desired
Code:
IonCode_0281.bam
IonCode_0282.fastq

# 2  
Old 02-18-2019
Code:
find . -maxdepth 1 -type f | awk -F'[._]' '($NF=="bam" && !($(NF-1)%2)) || ($NF=="fastq" && $(NF-1)%2) {print "rm " $0}'

When happy with the results, pipe to "sh": ..... | sh
This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 02-18-2019
Select on the last digit
Code:
find . -maxdepth 1 -type f -iname "IonCode_*[02468].bam" -print
find . -maxdepth 1 -type f -iname "IonCode_*[13579].fastq" -print

To really delete, replace -print with -delete.
These 2 Users Gave Thanks to MadeInGermany For This Post:
# 4  
Old 02-18-2019
In case you get charged by the find:
Code:
find . -maxdepth 1 -type f \( -iname "IonCode_*[13579].fastq" -o -iname "IonCode_*[02468].bam" \) -delete

or (gnu-ish)
Code:
find . -maxdepth 1 -type f -iregex '.*/IonCode_.*\([02468][.]bam\|[13579][.]fastq\)' -delete

This User Gave Thanks to rdrtx1 For This Post:
# 5  
Old 02-19-2019
I made a typo in the filenames, I apologize. The bold section is the even or odd number used. I think the 00-000 is being used and can not seem to have it look before the 00-000. Thank you Smilie.

Code:
IonCode_0281-00-000.bam     --- keep
IonCode_0282-00-000.bam     --- delete
IonCode_0281-00-000.fastq   --- delete
IonCode_0282-00-000.fastq   --- keep


Last edited by cmccabe; 02-19-2019 at 10:02 AM..
# 6  
Old 02-19-2019
Code:
find . -maxdepth 1 -type f -iregex '.*/IonCode_.*\([0-9]+[02468]-[0-9]*-[0-9]*[.]bam\|[0-9]+[13579]-[0-9]*-[0-9]*[.]fastq\)' -delete

This User Gave Thanks to rdrtx1 For This Post:
# 7  
Old 02-20-2019
Thank you all Smilie.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk with sed to combine lines and remove specific odd # pattern from line

In the awk piped to sed below I am trying to format file by removing the odd xxxx_digits and whitespace after, then move the even xxxx_digit to the line above it and add a space between them. There may be multiple lines in file but they are in the same format. The Filename_ID line is the last line... (4 Replies)
Discussion started by: cmccabe
4 Replies

2. Shell Programming and Scripting

How to delete all lines before a particular pattern when the pattern is defined in a variable?

I have a file Line 1 a Line 22 Line 33 Line 1 b Line 22 Line 1 c Line 4 Line 5 I want to delete all lines before last occurrence of a line which contains something which is defined in a variable. Say a variable var contains 'Line 1', then I need the following in the output. ... (21 Replies)
Discussion started by: Soham
21 Replies

3. UNIX for Beginners Questions & Answers

Delete duplicate like pattern lines

Hi I need to delete duplicate like pattern lines from a text file containing 2 duplicates only (one being subset of the other) using sed or awk preferably. Input: FM:Chicago:Development FM:Chicago:Development:Score SR:Cary:Testing:Testcases PM:Newyork:Scripting PM:Newyork:Scripting:Audit... (6 Replies)
Discussion started by: tech_frk
6 Replies

4. Shell Programming and Scripting

sed -- Find pattern -- print remainder -- plus lines up to pattern -- Minus pattern

The intended result should be : PDF converters 'empty line' gpdftext and pdftotext?xml version="1.0"?> xml:space="preserve"><note-content version="0.1" xmlns:/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size">PDF converters gpdftext and pdftotext</note-content>... (9 Replies)
Discussion started by: Klasform
9 Replies

5. Shell Programming and Scripting

Print/delete the lines between two pattern.

Hello, I am having hard time figuring out how to print/delete the lines between two pattern. Here is the part of the file nastran1.bdf: RBE3 48729 32232 123456 0.30000 123 59786 59787 60114 RBE3 48732 1330 123 0.30000 123 10107... (4 Replies)
Discussion started by: dragomir
4 Replies

6. Shell Programming and Scripting

How to search for pattern in odd lines?

Hi friends, I am looking for sed command/script that would search for a given fixed pattern on odd lines and then if it matches, prints the matching pattern and the next line. For example, in the example below, i am looking for pattern 0 and 1011 on odd lines. ########## start of example file... (10 Replies)
Discussion started by: kaaliakahn
10 Replies

7. Shell Programming and Scripting

delete lines starting with a pattern

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 (4 Replies)
Discussion started by: yashwantkumar
4 Replies

8. Shell Programming and Scripting

sed pattern to delete lines containing a pattern, except the first occurance

Hello sed gurus. I am using ksh on Sun and have a file created by concatenating several other files. All files contain header rows. I just need to keep the first occurrence and remove all other header rows. header for file 1111 2222 3333 header for file 1111 2222 3333 header for file... (8 Replies)
Discussion started by: gary_w
8 Replies

9. Shell Programming and Scripting

Find pattern a delete previous 5 lines

Hi guys, i have the follow problem i need to delete 10 row before the pattern and 1 after and the pattern row itself. file looks like: frect 9.8438 25.8681 10.625 25 . dynprop \ (# \ (call fox_execute(__self))) \ (FOX_VAR_29 \ ... (4 Replies)
Discussion started by: EjjE
4 Replies

10. Shell Programming and Scripting

Delete Lines between the pattern

Hi All, Below is my requirement. Whatever coming in between ' ', needs to delete. Input File Contents: ============== This is nice 'boy' This 'is bad boy.' Got it Expected Output =========== This is nice This Got it (4 Replies)
Discussion started by: susau_79
4 Replies
Login or Register to Ask a Question