Mysql 使用sed解析文本文件以生成CSV文件

Mysql 使用sed解析文本文件以生成CSV文件,mysql,bash,csv,sed,Mysql,Bash,Csv,Sed,我有一个数千兆字节的文本文件,如下所示: >seq1 AAAUAAAUAAAUAAA ............... ( 0.00) >seq2 AAAUAAAUAAAUAAU ............... ( 0.00) >seq3 AAAUAAAUAAAUAAC ............... ( 0.00) >seq4 AAAUAAAUAAAUAAG ............... ( 0.00) >seq5 AAAUAAAUAAAUAUA ....

我有一个数千兆字节的文本文件,如下所示:

>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完成它的任务。

试试这个:

sed '/^>seq[0-9]/{N;N;s/\n/,/g;s/ \((  [0-9]\.[0-9][0-9])\)/,\1/}' file
注意::使用
-i
选项就地编辑文件,无需确认

  • />seq[0-9]/
    搜索以
    >seq开头,后跟一个数字的行
  • N;Ns/\n/,/g用逗号替换下两个换行符
  • 最后一个替换命令用逗号前的相同字符串替换括号之间的十进制数
使用perl命令行(假设点是核苷酸):

-0
将记录分隔符更改为
(076八进制)
-p
自动打印记录

-e
执行以下命令

直接在闸门外执行!非常感谢。
perl -0076 -pe 's/\b\s+/,/g' file