gpt4 book ai didi

awk 字段分隔符不适用于第一行

转载 作者:行者123 更新时间:2023-12-04 10:15:42 26 4
gpt4 key购买 nike

echo 'NODE_1_length_317516_cov_18.568_ID_4005' | awk 'FS="_length" {print $1}'

获得的输出:
NODE_1_length_317516_cov_18.568_ID_4005

预期输出:
NODE_1

这怎么可能?我错过了一些东西。

最佳答案

当您使用 Awk 浏览行时,字段分隔符在处理记录之前被解释。 awk 根据 FS 的当前值读取记录和 RS并继续执行您要求的操作。

这意味着 如果设置 FS 的值在读取记录时,这不会对该特定记录产生影响。相反,FS阅读下一篇时会生效等等。

因此,如果您有这样的文件:

$ cat file
1,2 3,4
5,6 7,8

并且您在读取一条记录时设置了字段分隔符,它从下一行开始生效:
$ awk '{FS=","} {print $1}' file
1,2 # FS is still the space!
5

所以你要做的是设置 FS在开始读取文件之前。也就是说,在 BEGIN 块或通过参数设置它:
$ awk 'BEGIN{FS=","} {print $1}' file
1,2 # now, FS is the comma
5
$ awk -F, '{print $1}' file
1
5

还有另一种方法:让 Awk 用 {$0=$0} 重新计算完整记录.这样,Awk 将考虑当前 FS并采取相应的行动:
$ awk '{FS=","} {$0=$0;print $1}' file
1
5

关于awk 字段分隔符不适用于第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855641/

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