How to delete or remove every nth line in a file? The requirement is to remove every 3rd line in the file.
Let us consider a file with the below content.
$ cat file AIX Solaris Unix Linux HPUX
1. awk solution :
$ awk 'NR%3' file AIX Solaris Linux HPUXNR%3 will be true for any line number which is not multiple of 3, and hence the line numbers which are multiple's of 3 does not get printed.
Note: NR%3 is same as NR%3!=0
2. Perl:
$ perl -lne 'print if $.%3 ;' file AIX Solaris Linux HPUXSame logic as awk solution. $. in perl contains the line number of the file.
3. sed:
$ sed 'n;n;d;' file AIX Solaris Linux HPUXn commands prints the current line and reads the next line. Hence 2 consecutive n's result in 2 lines getting printed with the 3rd line in the pattern space. d command deletes the line(3rd line) which is present in the pattern space. And this continues till the end of the file.
4. Bash Shell script:
$ x=0 $ while read line > do > ((x++)) > [ $x -eq 3 ] && { x=0; continue; } > echo $line > done < file AIX Solaris Linux HPUXA simple logic of incrementing a variable by 1 after every line is processed. When the count becomes 3, the particular line is not printed and the counter is reset.
No comments:
Post a Comment