【问题标题】:Parsing text file to make a CSV file using sed使用 sed 解析文本文件以制作 CSV 文件
【发布时间】:2016-07-25 08:07:55
【问题描述】:

我有一个多 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 发挥作用。

【问题讨论】:

    标签: mysql bash csv sed


    【解决方案1】:

    使用 perl 命令行(假设点是核苷酸)

    perl -0076 -pe 's/\b\s+/,/g' file
    

    -0 将记录分隔符更改为 >(八进制中的 076)
    -p 自动打印记录
    -e 执行以下命令

    【讨论】:

      【解决方案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;用逗号替换下两个换行符
      • 最后一个替换命令用逗号前面的相同字符串替换括号之间的十进制数

      【讨论】:

      • 直接工作!谢谢!
      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多