Regex 将括号内容拆分为新列

Regex 将括号内容拆分为新列,regex,awk,split,brackets,Regex,Awk,Split,Brackets,我一整天都在尝试提取和分割这个括号内容,但我就是做不到。 我尝试使用sed和tr将“[]”替换为\t,并一步一步地执行,但一点运气都没有 tr '[''\t'` 甚至一个朋友也尝试使用vi,但它太复杂了,不起作用: :%s/\([A-Za-z_]*\)\t\([0-9A-Z-]*\)\t\([0-9]*\)\t[A-Z]*\[\(.\).\(.\)\][A-Z]*\t+\([a-z0-9]*\)\t/\1\t\2\t\3\t\4\t\5\t\6\t\7/g 也尝试过python,但它说有太多

我一整天都在尝试提取和分割这个括号内容,但我就是做不到。 我尝试使用sed和tr将“[]”替换为\t,并一步一步地执行,但一点运气都没有

tr '[''\t'`
甚至一个朋友也尝试使用vi,但它太复杂了,不起作用:

:%s/\([A-Za-z_]*\)\t\([0-9A-Z-]*\)\t\([0-9]*\)\t[A-Z]*\[\(.\).\(.\)\][A-Z]*\t+\([a-z0-9]*\)\t/\1\t\2\t\3\t\4\t\5\t\6\t\7/g
也尝试过python,但它说有太多的值需要解包

这必须是一个括号之类的问题。 所以,我有这个表,但包含数十万行

Species X-C982  282 AACTGTCCATTGACTCTGATAGTGTAAC[G/A]GAGGAAGATGTGCCTAAAAGGAAGAA scaffold7
Species X-A757  158 CCAAGACAGACAGTGGGGTAGAATTTAC[T/C]ACAACAGGCAGTCACAGTGACAAAGG scaffold7
Species X-G39   842 TGATGAACATCAGACTTTTAAACTTTGC[T/C]CATGCATAAATCTGTATATCACGCTA scaffold9
我需要提取内容并将其从“/”中拆分,因此它看起来像这样(所有选项卡分开):

很抱歉没有发布任何好的代码,但它们都不起作用

我知道这在excel中是很容易做到的,但有时处理超过一百万行的代码是不可能的。 提前谢谢

$ awk -F'[][[:space:]/]+' -v OFS='\t' '{print $1, $2, $3, $5, $6, $8}' file
Species X-C982  282     G       A       scaffold7
Species X-A757  158     T       C       scaffold7
Species X-G39   842     T       C       scaffold9
如果你将来还要做更多的文本操作任务,请阅读Arnold Robbins的《有效的Awk编程》,第四版


如果您将来要执行更多的文本操作任务,请阅读Arnold Robbins的《有效的Awk编程》第四版。

使用Awk,您可以如下定义字段分隔符:

awk -F'[] ][ACTG]*[[ ]|/' '$1=$1' file

使用awk,可以如下定义字段分隔符:

awk -F'[] ][ACTG]*[[ ]|/' '$1=$1' file

如果对核苷酸序列中可能出现多少次“[X/Y]”有任何疑问,那么最好检查一下

假设输入以标签分隔,3美元是长核苷酸序列,下面说明了可以做什么:

 awk -F\\t '
   BEGIN{OFS=FS}
   $3 ~ /\[/ { split($3, a, "[][/]"); print $1,$2,a[2],a[3],$4; next}
   {print $1,$2,"","",$4} '

如果对核苷酸序列中可能出现多少次“[X/Y]”有任何疑问,那么最好检查一下

假设输入以标签分隔,3美元是长核苷酸序列,下面说明了可以做什么:

 awk -F\\t '
   BEGIN{OFS=FS}
   $3 ~ /\[/ { split($3, a, "[][/]"); print $1,$2,a[2],a[3],$4; next}
   {print $1,$2,"","",$4} '

逐行阅读并替换为:
\S*\[([A-Z])\/([A-Z])]\S*
->
\1\t\2
这是学习人类的一种很酷的方式。感谢逐行阅读并替换为:
\S*\[([A-Z])\/([A-Z])]\S*
->
\1\t\2
这是学习人类的一种很酷的方式。谢谢你,伙计。是的,我是在你的建议之后才开始读的,但是你知道。。这需要一段时间。我真的很想弄明白这一点。由于所有列都以任何方式显示,所以选项卡似乎有问题。。我认为这是一个标签编号的问题,但没有。其中一个正在拖动另一个,或者没有被制表符隔开。你是说你的输入文件中有制表符吗?你的问题中没有提到这一点。我已经更新了答案,所以它可以处理输入文件中的任何空白。非常感谢。是的,我是在你的建议之后才开始读的,但是你知道。。这需要一段时间。我真的很想弄明白这一点。由于所有列都以任何方式显示,所以选项卡似乎有问题。。我认为这是一个标签编号的问题,但没有。其中一个正在拖动另一个,或者没有被制表符隔开。你是说你的输入文件中有制表符吗?你的问题中没有提到这一点。我已经更新了答案,因此它可以处理输入文件中的任何空白。