重命名和编辑ChiP-seq床文件

时间:2017-01-19 20:25:07

标签: awk sed

我有大约80个床文件,前3列(例如:X2_example.bed,其中X2是基因名称),我想添加第4列的基因名称并重命名该文件(附例:X2_example_edited.bed, Y2_example_edited.bed等等..),然后将这些文件合并在一起创建1个床文件。

我可以添加带有基因名称的第4列,并使用代码

保存不同名称的文件
 sed 's/$/\tX2/' < X2_example.bed  > X2_example_edited.bed

这是生成的床文件

chr17   42276210    42276219    X2
chr17   42297938    42297947    X2
chr17   42276210    42276219    X2
chr17   42297938    42297947    X2

但是我必须为每个床文件单独执行此操作。这样我就可以从文件名中提取基因名称(例如X2_example.bed中的X2),然后将其添加到床文件的第4列并保存为X2_example_edited.bed。

我可以从文件名中提取基因名称 echo "X2_example.bed" | awk -F'[_.]' '{print $1}

但是,由于我有太多文件,我正在寻找一种方法来生成一个循环来实现自动化。

此外,我需要合并所有生成的床文件,我可以通过

cat *_edited.bed >output.bed

但是,我遇到了错误(参见附件示例:output.bed),第一个文件的最后一行和下一个文件的第一行在同一行。

chr3    18467066    18467075    Y2
chr17   42276210    42276219    X2

我知道这必须是一个非常基本的东西,但我是这个分析的新手并且知识有限。 提前致谢

1 个答案:

答案 0 :(得分:1)

您可以尝试使用awk

for file in *.bed; do 
    awk '{split(FILENAME,a,"_"); print $0, a[1]}' "$file" 
done > output.bed.all