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

标签 mysql bash csv sed

我有一个数 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/

相关文章:

Bash 变量范围泄漏

csv - 如何加快neo4j中的大数据导入速度

python - 遍历多个 CSV 文件

php - Symfony - 为多对多关系创建的表构建查询

bash - 如何获得正确数量的后台作业运行,f.ex。 $(jobs | wc -l | xargs) 返回 1 而不是 0

linux - vi 用剪贴板替换视觉模式选择

python - 读取值并将它们写为逗号分隔值 python

php - Strato 中的 PDO 连接

MySQL按价格获取最新20个产品订单

mysql - 获取行的最大值或最小值,但忽略空白列或 0