我有大约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
我知道这必须是一个非常基本的东西,但我是这个分析的新手并且知识有限。 提前致谢
答案 0 :(得分:1)
您可以尝试使用awk
for file in *.bed; do
awk '{split(FILENAME,a,"_"); print $0, a[1]}' "$file"
done > output.bed.all