http://www.perlmonks.org?node_id=1102263


in reply to Is there any efficient way i can take out a specific column from hundreds of files and put it in one file?

If you have a *nix system, what about just using a simple BASH approach?

for FILE in *.tsv; do cut -f3 $FILE > $FILE.temp # use -d option if not tab-delimited done paste *.temp > final.tsv rm *.temp

This code puts the third column of each file into temp files and them pastes them all together into a final file.

Based on one of your other posts, I suspect that you might want to also have the first column of one of the files in the final file. Also, it seems reasonable to label each of the columns with the file name, at least. The code below should accomplish both of these objectives.

for FILE in *.tsv; do echo $FILE > $FILE.temp cut -f3 $FILE >> $FILE.temp done echo Gene_IDs > gene-ids.tsv cut -f1 one-of-the-files.tsv >> gene-ids.tsv paste gene-ids.tsv *.temp > final.tsv rm *.temp
  • Comment on Re: Is there any efficient way i can take out a specific column from hundreds of files and put it in one file?
  • Select or Download Code