#!/usr/bin/awk -f # Public domain notice for all NCBI EDirect scripts is located at: # https://www.ncbi.nlm.nih.gov/books/NBK179288/#chapter6.Public_Domain_Notice # Author: Aaron Ucko BEGIN { FS = "\t" } (NR <= 2) { for (c = 1; c <= NF; ++c) { data[NR,c] = $c # Subsequent rows will be populated lazily. } } (NR > 2) { for (c = 1; c <= NF; ++c) { if ( !(c in interesting) && $c != data[2,c] ) { interesting[c] = 1 # Belatedly fill in data for this column in previous rows. for (r = 3; r < NR; ++r) { data[r,c] = data[2,c] } } if (c in interesting) { data[NR,c] = $c } } } END { for (r = 1; r <= NR; ++r) { l = "" for (c = 1; c <= NF; ++c) { if (c in interesting) { l = l "\t" data[r,c] } } print substr(l, 2) # Leave off initial tab. } }