This is a test version of Biostars. For the public version, visit https://www.biostars.org.
How to copy one column from many files to a new file?

Hello

I have 200 files. Each has 2 columns. I want to copy the first column from each of the 200 files into a new file. The new file will have 200 columns. How to do this (using awk/cut/paste etc). I have tried awk, but putting it in a for loop is difficult and I have failed to do so.

Thank you for your help!!

sequence genome assembly

It would help if you could provide a sample. Is it a plain text file, does it contain non-ascii characters? Are there headers that you want to preserve? What is the separator between columns? Are there spaces in the entries?

1 answer

I know you wanted an awk/cut solution, but this Rscript does the trick. Save it to a folder as script.R that has the 200 txt files and it'll automatically merge them and save it as "merged.txt"

Rscript script.R

if(!require("tidyverse")) install.packages("tidyverse")
files <- list.files(pattern = "\\.txt$")
files <- purrr::map(files, ~ readr::read_tsv(.x, col_names = FALSE)) 
files <- purrr::map(files, ~ .x[1])
files <- dplyr::bind_cols(files)
readr::write_csv(files, path = "merged.txt", col_names = FALSE)

Thanks a ton! It works!!

Seq225 : Besides thanking posters, please accept answers (green check mark) to validate them and provide closure to the thread. Do this for your past questions as well. You can accept more than one answer if they work.

Log in to answer this question.