gpt4 book ai didi

awk 字段分隔符区分 -1、10 和 1

转载 作者:行者123 更新时间:2023-12-04 10:17:11 25 4
gpt4 key购买 nike

假设我有一个文本文件:

>>cat tmp.txt
1 1 1 1 1 -1 -1 -1 -1 -1 10 10 10 10 10

我想找到数字 1、-1 和 10 的唯一出现次数。以下是我迄今为止所拥有的:
awk -F '-1' '{print NF-1,NR}' tmp.txt | awk '{print $1}'
awk -F '10' '{print NF-1,NR}' tmp.txt | awk '{print $1}'
awk -F '1' '{print NF-1,NR}' tmp.txt | awk '{print $1}'

其中输出是 5、5 和 15,而不是 5、5 和 5。看起来 awk 命令正在为最终命令查找 1 的每个实例。如何正确处理?

最佳答案

您的 1字段分隔符匹配 1字符串中的任何位置,与上下文无关。

这里一个有效的 awk 方法是使用默认的空白字段分隔符并计算那些等于 1 的字段的值。 .

我建议使用

awk '{a=0;for(i=1;i<=NF;i++) { if($i=="1") {a++} };print a}' tmp.txt

online demo .

这个 awk 命令分配了一个 0a变量,然后遍历所有字段(使用 for(i=1;i<=NF;i++) {...} )并递增 a找到带有 1 的字段时值(见 if($i=="1") {a++} }),然后打印 a值(value)。

关于awk 字段分隔符区分 -1、10 和 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021537/

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