我有一个数 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 执行它的操作。
最佳答案
试试这个:
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;
用逗号替换下两个换行符- 最后一个替换命令用以逗号开头的相同字符串替换括号之间的十进制数
关于mysql - 使用sed解析文本文件以生成CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425425/