Alex Rivera | Logout

print all but select fields in awk

Asked 2011-06-23T17:49:08.260
22

I have a large file with hundreds of columns that I want to remove only the third and fourth columns from and print the rest to a file. My initial idea was to make an awk script like awk '{print $1, $2, for (i=$5; i <= NF; i++) print $i }' file > outfile. However, this code does not work.

I then tried:

awk '{for(i = 1; i<=NF; i++)
if(i == 3 || i == 4) continue
else
print($i)}' file > outfile

But this just printed everything out in one field. It would be possible to split this up into two scripts and combine them with unix paste but this seems like something that should be able to be done in one line.

Edit
Report

1 Answer

12

How about just setting the third and fourth columns to an empty string:

echo 1 2 3 4 5 6 7 8 9 10 |
awk -F" " '{ $3="";  $4=""; print}'
answered 2011-06-23T18:04:42.713

Your Answer