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代码>用逗号替换下两个换行符
- 最后一个替换命令用逗号前的相同字符串替换括号之间的十进制数
-0
将记录分隔符更改为
(076八进制)-p
自动打印记录-e
执行以下命令直接在闸门外执行!非常感谢。
perl -0076 -pe 's/\b\s+/,/g' file