如何使用bash按字符串拆分列?

威格

给定带有八列的制表符分隔文件:

22  51244237    rs575160859 C   T   100 PASS AC=19;AF=0.00379393;AN=5008;NS=2504;DP=13345;EAS_AF=0;AMR_AF=0.0043;AFR_AF=0;EUR_AF=0.0099;SAS_AF=0.0061;AA=.|||;VT=SNP

我如何使用 bash 从第八列中的信息创建一个新的制表符分隔的文件:AF; EAS_AF; AMR_AF; AFR_AF; EUR_AF; SAS_AF 和相应的数值?

IE:

#AF         EAS_AF   AMR_AF     AFR_AF   EUR_AF     SAS_AF 
0.00379393  0        0.0043     0        0.0099     0.0061

我知道我可以用“;”分割第八列 https://unix.stackexchange.com/questions/156919/splitting-a-column-using-awk)然后删除不需要的文本列和文本字符串(即“AF =”),但有没有更有效的方法去做这个?

谢谢

拉文德辛格13

你能不能试试以下。

awk '
{
  match($0,/AF[^;]*/)
  af=substr($0,RSTART,RLENGTH)
  match($0,/EAS_AF[^;]*/)
  eas=substr($0,RSTART,RLENGTH)
  match($0,/AMR_AF[^;]*/)
  amr=substr($0,RSTART,RLENGTH)
  match($0,/AFR_AF[^;]*/)
  afr=substr($0,RSTART,RLENGTH)
  match($0,/EUR_AF[^;]*/)
  eur=substr($0,RSTART,RLENGTH)
  match($0,/SAS_AF[^;]*/)
  sas=substr($0,RSTART,RLENGTH)
  VAL=af OFS ac OFS eas OFS amr OFS afr OFS eur OFS sas
  split(VAL,array,"[= ]")
  print array[1],array[4],array[6],array[8],array[10],array[12] ORS array[2],array[5],array[7],array[9],array[11],array[13]
}' Input_file | column -t

说明:在此处也添加对上述代码的说明。

awk '
{
  match($0,/AF[^;]*/)             ##Using match out of the box awk function for matching AF string till semi colon.
  af=substr($0,RSTART,RLENGTH)    ##creating variable named af whose value is substring of indexes of RSTART to till value of RLENGTH.
  match($0,/EAS_AF[^;]*/)         ##Using match out of the box awk function for matching EAS_AF string till semi colon.
  eas=substr($0,RSTART,RLENGTH)   ##creating variable named eas whose value is substring of indexes of RSTART to till value of RLENGTH.
  match($0,/AMR_AF[^;]*/)         ##Using match out of the box awk function for matching AMR_AF string till semi colon.
  amr=substr($0,RSTART,RLENGTH)   ##creating variable named amr whose value is substring of indexes of RSTART to till value of RLENGTH.
  match($0,/AFR_AF[^;]*/)         ##Using match out of the box awk function for matching AFR_AF string till semi colon.
  afr=substr($0,RSTART,RLENGTH)   ##creating variable named afr whose value is substring of indexes of RSTART to till value of RLENGTH.
  match($0,/EUR_AF[^;]*/)         ##Using match out of the box awk function for matching EUR_AF string till semi colon.
  eur=substr($0,RSTART,RLENGTH)   ##creating variable named eur whose value is substring of indexes of RSTART to till value of RLENGTH.
  match($0,/SAS_AF[^;]*/)         ##Using match out of the box awk function for matching SAS_AF string till semi colon.
  sas=substr($0,RSTART,RLENGTH)   ##creating variable named sas whose value is substring of indexes of RSTART to till value of RLENGTH.
  VAL=af OFS ac OFS eas OFS amr OFS afr OFS eur OFS sas    ##Creating variable VAL whose value is values of all above mentioned variables.
  split(VAL,array,"[= ]")         ##Using split function of awk to split it into array named array with delimiter space OR =.
  print array[1],array[4],array[6],array[8],array[10],array[12] ORS array[2],array[5],array[7],array[9],array[11],array[13]   ##Printing all array values as per OP.
  af=ac=eas=amr=afr=eur=sas=""    ##Nullifying all variables mentioned above.
}' Input_file     | column -t     ##Mentioning Input_file name here and passing awk output to column command to take output in TAB format.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

awk | 拆分列并使用子字符串映射

来自分类Dev

如何使用熊猫基于多个字符串索引拆分列

来自分类Dev

如何使用熊猫基于多个字符串索引拆分列

来自分类Dev

熊猫字符串拆分列丢失

来自分类Dev

如何按单词拆分字符串?

来自分类Dev

如何在bash中按选项卡拆分字符串

来自分类Dev

如何在Java中按字符拆分字符串?

来自分类Dev

如何按字符集合拆分字符串?

来自分类Dev

如何按字符数的特定模式拆分字符串?

来自分类Dev

如何使用分隔字符串“#|#”拆分字符串

来自分类Dev

如何通过在熊猫中切片来拆分列字符串?

来自分类Dev

如何组合数据框中的字符串以列出和拆分列?

来自分类Dev

如何使用javascript拆分字符串

来自分类Dev

使用字符串拆分列表和标签包围的批处理脚本限制

来自分类Dev

在数据框内的行内拆分列字符串元素

来自分类Dev

如何使用sed或awk按模式将字符串拆分为标记

来自分类Dev

如何使用 JSTL 函数 fn:split 按数字拆分字符串?

来自分类Dev

使用jQuery在其中按整数拆分字符串

来自分类Dev

按字符拆分字符串

来自分类Dev

按转义字符拆分字符串

来自分类Dev

如何使用拆分功能在“ \”之间拆分字符串?

来自分类Dev

如何在bash中将字符串拆分为数组

来自分类Dev

如何在bash中将字符串拆分为列

来自分类Dev

如何在bash中使用引号(例如命令参数)拆分字符串?

来自分类Dev

按字符串长度拆分系列

来自分类Dev

按字符串数组拆分长字符串

来自分类Dev

拆分字符串,然后按字符数拆分

来自分类Dev

如何使用正则表达式按最后一个字符拆分字符串?

来自分类Dev

如何将配置单元的数据类型从字符串更改为多维数组以正确拆分列

Related 相关文章

  1. 1

    awk | 拆分列并使用子字符串映射

  2. 2

    如何使用熊猫基于多个字符串索引拆分列

  3. 3

    如何使用熊猫基于多个字符串索引拆分列

  4. 4

    熊猫字符串拆分列丢失

  5. 5

    如何按单词拆分字符串?

  6. 6

    如何在bash中按选项卡拆分字符串

  7. 7

    如何在Java中按字符拆分字符串?

  8. 8

    如何按字符集合拆分字符串?

  9. 9

    如何按字符数的特定模式拆分字符串?

  10. 10

    如何使用分隔字符串“#|#”拆分字符串

  11. 11

    如何通过在熊猫中切片来拆分列字符串?

  12. 12

    如何组合数据框中的字符串以列出和拆分列?

  13. 13

    如何使用javascript拆分字符串

  14. 14

    使用字符串拆分列表和标签包围的批处理脚本限制

  15. 15

    在数据框内的行内拆分列字符串元素

  16. 16

    如何使用sed或awk按模式将字符串拆分为标记

  17. 17

    如何使用 JSTL 函数 fn:split 按数字拆分字符串?

  18. 18

    使用jQuery在其中按整数拆分字符串

  19. 19

    按字符拆分字符串

  20. 20

    按转义字符拆分字符串

  21. 21

    如何使用拆分功能在“ \”之间拆分字符串?

  22. 22

    如何在bash中将字符串拆分为数组

  23. 23

    如何在bash中将字符串拆分为列

  24. 24

    如何在bash中使用引号(例如命令参数)拆分字符串?

  25. 25

    按字符串长度拆分系列

  26. 26

    按字符串数组拆分长字符串

  27. 27

    拆分字符串,然后按字符数拆分

  28. 28

    如何使用正则表达式按最后一个字符拆分字符串?

  29. 29

    如何将配置单元的数据类型从字符串更改为多维数组以正确拆分列

热门标签

归档