eu tenho um monte de arquivos
an_ar_chrom10_pos1_sun_td.txt
an_ar_chrom11_pos1_sun_td.txt
an_ar_chrom13_pos1_sun_td.txt
an_ar_chrom17_pos1_sun_td.txt
an_ar_chrom17_pos2_sun_td.txt
...
e cada arquivo tem formato semelhante parece com isso
head an_ar_chrom10_pos1_sun_td.txt
"region" "start" "stop" "mid" "G1_TD" "G2_TD" "G3_TD" "G4_TD"
"45000002 - 45010001 " 45000002 45010001 90.010003 NA NA NA NA
"45010002 - 45020001 " 45010002 45020001 90.030003 -1.19087678772119 -0.947895467698369 -0.724767209958411 -0.957244005901499
"45020002 - 45030001 " 45020002 45030001 90.050003 NA NA NA NA
"45030002 - 45040001 " 45030002 45040001 90.070003 NA NA NA NA
Desejo adicionar uma coluna extra a cada arquivo com base em alguns caracteres exclusivos em cada nome de arquivo (por exemplo, chrom10_pos1 para o primeiro arquivo, chrom11_pos1 para o segundo arquivo, etc.
Esta é a minha saída desejada
head an_ar_chrom10_pos1_sun_td_with_id.txt
"region" "start" "stop" "mid" "G1_TD" "G2_TD" "G3_TD" "G4_TD" "ID_
"45000002 - 45010001 " 45000002 45010001 90.010003 NA NA NA NA chrom10_pos1
"45010002 - 45020001 " 45010002 45020001 90.030003 -1.19087678772119 chrom10_pos1-0.947895467698369 -0.724767209958411 -0.957244005901499 chrom10_pos1
"45020002 - 45030001 " 45020002 45030001 90.050003 NA NA NA NA chrom10_pos1
"45030002 - 45040001 " 45030002 45040001 90.070003 NA NA NA NA chrom10_pos1
Eu o abordaria com um editor de script e um loop de shell sobre os nomes dos arquivos:
Isso faz um loop sobre todos os arquivos "*.txt" em seu diretório atual e os edita. A primeira linha do loop extrai os dados desejados do nome do arquivo em uma variável. A segunda linha imprime três comandos para
ed
:1s/$/ "ID"/
-- altera a linha 1 para anexar o novo cabeçalho da coluna2,$s/$/ $value/
(simplificado a partir do valor citado) -- nas linhas dois até o final do arquivo, substitua o final da linha por um espaço e os dados desejados.wq
-- grava o arquivo no disco e sai