【问题标题】:sed, starting a new line in middle of textsed,在文本中间开始一个新行
【发布时间】:2015-11-25 17:47:27
【问题描述】:

我需要在此 txt 文件中行中间的 DNA 核苷酸序列 (a,c,g,t) 的开头插入一个新行。我正在尝试使用 sed 来做到这一点。该行应插入标题之后,该标题具有多个由逗号和下划线分隔的标识符,并且始终以数字结尾。 acgt 序列长度不同。

程序:sed 项目:text_cmds-84

例子:

>AK353574,morex_contig_45194_1,474_0agtaacgctgtaatcaatgttgtgaataagacagtctgattcaacatgacatc
>AK353574,morex_contig_45194_1,474_118tgactcaactgtaatatctactgaagaactgaagggcgttagcaggatatgta
>AK353574,morex_contig_45194_1,474_236attcaggcaatgtaggcacaaaagtttccttgaggccgcaaaaaccatcttag

期望的输出:

>AK353574,morex_contig_45194_1,474_0
agtaacgctgtaatcaatgttgtgaataagacagtctgattcaacatgacatc
>AK353574,morex_contig_45194_1,474_118
tgactcaactgtaatatctactgaagaactgaagggcgttagcaggatatgta
>AK353574,morex_contig_45194_1,474_236
attcaggcaatgtaggcacaaaagtttccttgaggccgcaaaaaccatcttag

【问题讨论】:

  • 问题是如何插入换行符或如何匹配您拥有的数据?
  • 你也要打破第一行吗?
  • 问题是如何插入新行。

标签: sed newline fasta


【解决方案1】:

这可能对你有用(GNU sed,也可能是其他 sed):

sed 'G;s/\(.*[0-9]\)\(.*\)\(.\)$/\1\3\2/' file

添加一个换行符,然后使用模式匹配和反向引用在核苷酸序列之前插入换行符。

【讨论】:

  • 这并没有改变文件。我一定没有正确的 sed
  • @dmw_phylogenomics 一个常见的错误是认为 sed 默认编辑文件。它不是。它复制文件并编辑副本。要编辑文件,有一个选项-i。在幕后:编辑一个临时文件,然后将其重命名为原始文件名。 -i 还可以有一个参数,用于备份原始文件。
【解决方案2】:

正则化:

sed 's/.*_[0-9]\{1,\}/&\
/' YourFile

GNU:

sed 's/.*_[0-9]+/&\n/' YourFile

使用 sed 的行为,尝试总是从左边获取最大的部分

【讨论】:

  • 由于 Unix 文本中断,这些脚本都不适用于我的 sed 版本。
  • unix 文本中断是什么意思?根据您的示例数据在我的 AIX 和 linux 上工作
  • 我正在使用 Mac。当我选择导入 fasta 并再次保存时,使用文本编辑程序,它为我提供了如何编写 文本中断 的几个选项。当我选择 Unix 时,它起作用了。
  • 好的,在这种情况下,您应该在新行 (/f) 后添加 FormFeed 字符,请参阅 cyberciti.biz/faq/…
猜你喜欢
  • 2011-12-13
  • 2017-06-05
  • 1970-01-01
  • 2016-04-27
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多