复制文件名和某些文本字符串,然后将其放入子目录中所有文件的特定部分

时间:2016-06-30 11:57:44

标签: python regex unix bioinformatics

我在子目录中有很多文件,例如。 UCE-1 ... UCE-2000,它们都包含相同的两种文件类型(.cfg文件和.phylip文件。)

UCEs

UCE-13

partition_finder.cfg 

UCE-13.phylip

我需要修改所有这些UCE-1 ... UCE-2000文件夹中的.cfg文件。具体来说,我需要复制.phylip文件UCE-13.phylip的文件名,并将其放在.cfg文件内的特定文本部分,例如更改

alignment = ;

alignment = UCE-13.phylip;

我需要做的第二个修改是复制始终在第一行末尾的.phylip文件中找到的文本部分,并在.cfg文件的特定位置替换它。

复制空格和返回之间.phylip文件第一行的最后一组数字

2 466\r 

然后在.cfg

中找到替换它

All = 1-;

All = 1-466;

数字非常长。

非常感谢任何这些问题的帮助。

1 个答案:

答案 0 :(得分:0)

从“All-UCEs"”开始 这个信息对于一个子目录来说都是常见的 先去那个目录 获得phylip名称
获取phylip文件第一行的最后一个字段 将它们粘贴在.cfg文件中 (使用双引号允许在sed中扩展shell var)
改回dir

for dir in UCE-*; do
    cd ${dir}
    phylip="*.phylip"
    some_num=`awk 'NR==1{print $NF}' ${phylip}`
    sed -i "s/alignment  = ;/alignment  = ${phylip};/;\
        s/All = 1-;/All = 1-${some_num};" *.cfg
    cd ..
done

(未测试的)