我有大约80个包含前3列的bed文件(例如: X2_example.bed,其中X2是基因名称),我想添加第四列带有基因名称的文件并重命名该文件(附加的示例: X2_example_edited.bed,Y2_example_edited.bed等..),然后将这些文件合并在一起创建1个bed文件。
我可以使用基因名称添加第四列,并使用代码以不同的名称保存文件
sed 's/$/\tX2/' < X2_example.bed > X2_example_edited.bed这是生成的bed文件
chr17 42276210 42276219 X2
chr17 42297938 42297947 X2
chr17 42276210 42276219 X2
chr17 42297938 42297947 X2但我必须为每个bed文件分别执行此操作。这有一种方法,我可以从文件的名称中提取基因名称(例如,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我知道这一定是一件非常基础的事情,但我对这种分析还是个新手,知识有限。提前感谢
发布于 2017-01-20 05:24:13
您可以尝试使用awk
for file in *.bed; do
awk '{split(FILENAME,a,"_"); print $0, a[1]}' "$file"
done > output.bed.allhttps://stackoverflow.com/questions/41751043
复制相似问题