1 sed awk text-processing bioinformatics
我有这个基因数据库,它被额外的非字母数字值完全搞砸了。这是对错误制作的数据进行的一种加密,我不知道如何清理它。我试过sed和awk,但失败了。这是大量文档的数据示例:
chr2#@!!~/\/=\^%$74711&&*&127472363@Pos1%%0^^+
chr3#@!!~/\/=\^%$74723&&*&127473530@Pos2%%0^^+
chr1#@!!~/\/=\^%$73530&&*&127474697@Pos3%%0^^+
chr2#@!!~/\/=\^%$17469&&*&127475864@Pos4%%0^^+
chr3#@!!~/\/=\^%$12747&&*&127477031@Neg1%%0^^-
chr5#@!!~/\/=\^%$17477&&*&127478198@Neg2%%0^^-
chr7#@!!~/\/=\^%$74781&&*&127479365@Neg3%%0^^-
chr7#@!!~/\/=\^%$74795&&*&127480532@Pos5%%0^^+
chr1#@!!~/\/=\^%$12748&&*&127481699@Neg4%%0^^-
Run Code Online (Sandbox Code Playgroud)
清洗后的数据必须是这样的:
chr2 74711 127472363 Pos1 0 +
chr3 74723 127473530 Pos2 0 +
chr1 73530 127474697 Pos3 0 +
chr2 17469 127475864 Pos4 0 +
chr3 12747 127477031 Neg1 0 -
chr5 17477 127478198 Neg2 0 -
chr7 74781 127479365 Neg3 0 -
chr7 74795 127480532 Pos5 0 +
chr1 12748 127481699 Neg4 0 -
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
小智 9
你可以用sed. 如下:
sed 's/[^a-zA-Z0-9+-]/ /g' file | column -tc2
chr2 74711 127472363 Pos1 0 +
chr3 74723 127473530 Pos2 0 +
chr1 73530 127474697 Pos3 0 +
chr2 17469 127475864 Pos4 0 +
chr3 12747 127477031 Neg1 0 -
chr5 17477 127478198 Neg2 0 -
chr7 74781 127479365 Neg3 0 -
chr7 74795 127480532 Pos5 0 +
chr1 12748 127481699 Neg4 0 -
Run Code Online (Sandbox Code Playgroud)
使用tr,将所需集的补码中的字符音译为空格,然后重复压缩:
$ tr -sc '[:alnum:][:space:]+-' ' ' < data
chr2 74711 127472363 Pos1 0 +
chr3 74723 127473530 Pos2 0 +
chr1 73530 127474697 Pos3 0 +
chr2 17469 127475864 Pos4 0 +
chr3 12747 127477031 Neg1 0 -
chr5 17477 127478198 Neg2 0 -
chr7 74781 127479365 Neg3 0 -
chr7 74795 127480532 Pos5 0 +
chr1 12748 127481699 Neg4 0 -
Run Code Online (Sandbox Code Playgroud)