美文网首页生命科学-简书专题
如何把bed files row bind 行结合

如何把bed files row bind 行结合

作者: Ternq8 | 来源:发表于2017-08-30 14:42 被阅读4次

文本文档,excel-txt-bed-terminal,换行符的问题

如果txt file 或者 bed file 是excel 导出的时候,当运用 cat 行结合两个文本文档的时候会出现换行问题
http://sphenginx.github.io/2014/12/24/CRLF-in-Unix-like_Windows-os/

第一个只适用一般的txt,而不是bed file

在windows下将txt文件保存为ANSI格式,然后在Linux终端输入:
cat ms.txt | col -b > linux.txt

mac 里的excel保存txt, 要保存为windows formatted test (.txt)

bash-3.2$ cat file1.txt 
1
2
3
4
5bash-3.2$ cat file2.txt 
1
2
3
4
5
6
7
8
9
10bash-3.2$ cat -v file1.txt 
1^M
2^M
3^M
4^M
5bash-3.2$ wc file1
wc: file1: open: No such file or directory
bash-3.2$ wc file1.txt 
       4       5      13 file1.txt
bash-3.2$ wc -l file1.txt 
       4 file1.txt
bash-3.2$ cat file1.txt file2.txt > file3.txt
bash-3.2$ cat file3.txt 
1
2
3
4
51
2
3
4
5
6
7
8
9
10bash-3.2$ cat vi file1.txt 
cat: vi: No such file or directory
1
2
3
4
5bash-3.2$ vi file1.txt 
bash-3.2$ cat file1.txt | col -b > file1_1.txt
bash-3.2$ cat -v file1_1.txt 
1
2
3
4
5
bash-3.2$ cat -v file1.txt 
1^M
2^M
3^M
4^M
5bash-3.2$ cat file2.txt | col -b > file2_1.txt
bash-3.2$ cat -v file2.txt 
1^M
2^M
3^M
4^M
5^M
6^M
7^M
8^M
9^M
10bash-3.2$ cat -v file2_1.txt 
1
2
3
4
5
6
7
8
9
10
bash-3.2$ cat file1_1.txt file2_1.txt > file3_1.txt
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10

所以问题就是直接倒出的最后一行没有换行符,在linux里出现了少一行的现象。
一定要搞一下cat file1.txt | col -b > file1_1.txt

但是在搞bed file 的时候,新问题出现了,按照上面的方式,解决了换行的问题,去掉了 ^M, 看似问题解决了,但是在bedtools 里bed file被识别出现error。

所以又找了一些网上介绍的解决办法:

sed -e "s/\^M//" filename > newfilename
#Note: To enter ^M, type CTRL-V + M. That is, hold down the CTRL key then press V and M in succession.

例如

sed -e "s/\CTRL-V + M//" diff.ATAC.cpm2p7.txt.bed > diff.ATAC.cpm2p7.bed 

注意一定要存一个新的名字,要不然就废了。

所以,当有一个bed file要看

  1. wc -l XXX.bed 查看bed file 有多少行,
  2. cat -v XXX.bed 来看最后一行的最后一个是不是有换行符号,如果没有, 进行下一步,
  3. sed -e "s/\CTRL-V + M//“ XXX.bed > YYY.bed, 之后再检查1,2两步对YYY.bed, 行数应该+1

相关文章

网友评论

    本文标题:如何把bed files row bind 行结合

    本文链接:https://www.haomeiwen.com/subject/dxetjxtx.html