gpt4 book ai didi

linux - awk 如果表达式创建 0 和 1 而不是预期结果

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:28 24 4
gpt4 key购买 nike

输入文件是制表符分隔的,如下所示:

]2      71319482        71319483        71319483        MantaBND
8 17715051 17715052 17715052 MantaDEL
]5 137014789 137014790 137014790 MantaBND
8 34426251 34426252 34426252 MantaDEL
C]14 36674759 36674760 36674760 MantaBND

我使用了以下 awk 命令..

awk 'BEGIN {FS="\t";OFS="\t"} {if ($1 = /^].*/) {{split ($1,a,/]/);$10=a[1]}; {print $10, $2, $3, $4, $5"HT"}} else {print $1, $2, $3, $4, $5}}' file

.. 生成如下所示的结果:

2      71319482        71319483        71319483        MantaBNDHT
8 17715051 17715052 17715052 MantaDEL
5 137014789 137014790 137014790 MantaBNDHT
8 34426251 34426252 34426252 MantaDEL
C]14 36674759 36674760 36674760 MantaBND

但是结果是这样的:

1       71319482        71319483        71319483        MantaBNDHT
0 17715051 17715052 17715052 MantaDEL
1 137014789 137014790 137014790 MantaBNDHT
0 34426251 34426252 34426252 MantaDEL
0 36674759 36674760 36674760 MantaBND

为什么会发生这种情况,我该如何解决这个问题?我希望有一个人可以帮助我。

最佳答案

用sub代替split也是可以的,但是只用sub会导致第5列出错,所以我终于找到了办法(感谢oliv,=和==导致错误的结果,所以我测试了~ .

awk 'BEGIN {FS="\t";OFS="\t"} {if ($1 ~ /^].*/) {{split ($1,a,/]/);$10=a[2]}; {print $10, $2, $3, $4, $5"HT"}} else {print $1, $2, $3, $4, $5}}' file

2 71319482 71319483 71319483 MantaBNDHT
8 17715051 17715052 17715052 MantaDEL
5 137014789 137014790 137014790 MantaBNDHT
8 34426251 34426252 34426252 MantaDEL
C]14 36674759 36674760 36674760 MantaBND

关于linux - awk 如果表达式创建 0 和 1 而不是预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49176879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com