Search code examples
bashawkcutfastq

How to trim every nth line?


i would like to cut off the first 9 characters of each 4th line. I could use cut -c 9, but i don't know how to select only every 4th line, without loosing the remaining lines.

Input:

@V300059044L3C001R0010004402
AAGTAGATATCATGGAGCCG
+
FFFGFGGFGFGFFGFFGFFGGGGGFFFGG
@V300059044L3C001R0010009240
AAAGGGAGGGAGAATAATGG
+
GFFGFEGFGFGEFDFGGEFFGGEDEGEGF

Output:

@V300059044L3C001R0010004402
AAGTAGATATCATGGAGCCG
+
FGFFGFFGFFGGGGGFFFGG
@V300059044L3C001R0010009240
AAAGGGAGGGAGAATAATGG
+
FGEFDFGGEFFGGEDEGEGF

Solution

  • Could you please try following, written and tested with shown samples in GNU awk.

    awk 'FNR%4==0{print substr($0,10);next} 1' Input_file
    

    OR as per @tripleee's suggestion(in comments) try:

    awk '!(FNR%4) { $0 = substr($0, 10) }1' Input_file
    

    Explanation: Adding detailed explanation for above.

    awk '                   ##Starting awk program from here.
    FNR%4==0{               ##Checking condition if this line number is fully divided by 4(every 4th line).
      print substr($0,10)   ##Printing line from 10th character here.
      next                  ##next will skip all further statements from here.
    }
    1                       ##1 will print current Line.
    ' Input_file            ##Mentioning Input_file name here.