我试图在论坛上找到这个问题的解决方案,但是无法理解某些解决方案。
我正在使用DNA数据,我有2个文件。 第一个文件(a)是包含所有序列标题的文件。 (姓名等) 每个标题都有自己的行。 例如:
>title1
>title2
>title3
>some other title
第二个文件(b)包含这些标题的内容。 每行对应第一个文件。
GAGTTGGAAAGAG
GCTGCCCTGAGATCGTNNNN
GTGCAGTGATNNAGTG
ACTG
我正在制作一个搜索序列中未知字母的程序。 通常你会认为文件2只有字符A C T& G在里面。
我想制作2个文件:
到目前为止我试过这个:
while read line; do
echo "$line" | tr -d "A" | tr -d "C" | tr -d "T" | tr -d "G" | tr -d "\n" | wc -c
done <sequenceOnly.txt >unkownLines.txt
计算(b)文件中出现未知字符的频率。 如果这个值大于0,我想用这行把header + sequence放在unknownLines.txt文件中,但是我被卡住了:/
预期输出文件1(仅限ACTG):
>title1 GAGTTGGAAAGAG
>some other title ACTG
预期输出文件2(还有其他内容):
>title2 GCTGCCCTGAGATCGTNNNN
>title3 GTGCAGTGATNNAGTG
答案 0 :(得分:2)
首先,将数据与粘贴放在一起,然后用awk分开:
paste header sequence |
awk '$NF ~ /^[ACTG]*$/ {print > "file1"; next }1' > file2
粘贴将数据分为两列,awk
检查最后一列是否只包含字母ACTG
。如果是,则将该行写入文件file1
。 (也将打印空序列。)如果不是,则该行将写入file2
。