【发布时间】:2021-07-27 15:16:35
【问题描述】:
我有一个这样的文件(空格标签):
Agent 299301 1
Person 259672 2
Place 208239 3
Location 208239 4
PopulatedPlace 156701 5
Region 153246 6
AdministrativeRegion 153246 7
Work 96536 8
Agent 299301 1
Person 259672 2
我想为每一行返回一个不同的数字,就像它出现在第二列中一样多次
例如:
先返回号码1299301次,再返回2259672次,再返回3208239次
为此,我正在使用这个 awk 命令:
cat file | awk -F ' ' '{for (i=1; i<=$2; i++) print NR}' > output
第二列上的小数字似乎效果很好,但在这个文件示例中,我不知道为什么返回每个数字(在这种情况下为1)的次数不正确:
它返回数字1 558973 次而不是 299301 次
但它在文件的其余行中返回正确的数字(数字2, 3, 4...)
如果我在文件中添加更多行,它还会返回错误的次数,编号为2, 3, 4,直到编号为9,但它也适用于编号10, 11, 12, 13...
所以我不知道为什么会这样,希望你能帮助我。
提前致谢。
【问题讨论】:
-
如何检查给定数字在输出中出现的次数?
-
顺便说一句,欢迎来到 Stack Overflow!如果您需要提示,请查看tour 和How to Ask。使问题标题更具描述性会有所帮助,例如“为什么 AWK 重复错误的次数?”你可以edit。
-
请注意,由于第 1 行,1 输出了 299301 次,但由于第 9 行,又输出了 299301 次。
-
@choroba 不是,打印的不是
$3,而是NR...不过你的评论还是很有趣的。 -
看来558973的意义在于它是299301+259672。 IDK 为什么。
标签: bash awk windows-subsystem-for-linux