Warm tip: This article is reproduced from serverfault.com, please click

How to trim every nth line?

发布于 2020-12-17 13:11:58

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
Questioner
gnikixam
Viewed
0
RavinderSingh13 2020-12-17 21:28:19

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.