我有一个多GB的文本文件,如下所示:
>seq1
AAAUAAAUAAAUAAA
............... ( 0.00)
>seq2
AAAUAAAUAAAUAAU
............... ( 0.00)
>seq3
AAAUAAAUAAAUAAC
............... ( 0.00)
>seq4
AAAUAAAUAAAUAAG
............... ( 0.00)
>seq5
AAAUAAAUAAAUAUA
............... ( 0.00)
我需要将其转换为可以转储到MySQL表中的格式。我的想法是使它成为一个看起来像这样的CSV文件:
>seq1,AAAUAAAUAAAUAAA,...............,( 0.00)
>seq2,AAAUAAAUAAAUAAU,...............,( 0.00)
但我完全不确定如何编写正则表达式以使sed做它的事情。
答案 0 :(得分:2)
试试这个:
sed '/^>seq[0-9]/{N;N;s/\n/,/g;s/ \(( [0-9]\.[0-9][0-9])\)/,\1/}' file
注意::-i
选项编辑文件到位,无需确认。
/>seq[0-9]/
搜索以>seq
开头,后跟一个数字N;N;s/\n/,/g;
用逗号替换下两个换行符答案 1 :(得分:0)
使用perl命令行(假设点是核苷酸):
perl -0076 -pe 's/\b\s+/,/g' file
-0
将记录分隔符更改为>
(八进制中的076)
-p
自动打印记录
-e
执行以下命令