tente
for x in $(<names.in)
do
sed -i -s "s/ genes/ ${x}.Corrected/" Datafile.tsv
done
cat Datafile.tsv
chr begin end name1.Corrected name2.Corrected name3.Corrected name4.Corrected name5.Corrected
- não use o
/gflag que será aplicado a todas as ocorrências (você deseja substituir um por um) -
substitua meu
' 'por'\t' -
$names.inexpandiria para "o valor da variável de nomes" (concatenar para .in), isso provavelmente se expandiria para .in -
$(< name.in )lê o nome do arquivo.in, antes da execução do comando e substitui pelo conteúdo do arquivo (fim da linha fica branco)
um shell mais abrangente
cat "$1" | while read x
do
sed -i -s "s/ genes/ ${x}.Corrected/" "$2"
done
chamado como
myscript.sh names.in Datafile.tsv