awk - awk 字段分隔符区分 -1、10 和 1
问题描述
假设我有一个文本文件:
>>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 的每个实例。如何正确处理?
解决方案
使用默认分隔符:
awk '{for(i=1;i<=NF;i++)cnt[$i]++};END{for(i in cnt)print i,cnt[i]}'
推荐阅读
- java - 如何返回二叉搜索树中最深节点的键?(递归)
- javascript - 所有源文件的单线程?
- javascript - webpack直接在html标签中使用图片
- r - 如何计算是/否响应并将它们分组?
- c - 创建一个大小为 N 的数组,然后为每个元素分配值“[ ]”
- r - 将 JSON 转换为具有正确列名的数据框
- android - WorkManager always in ENQUEUED state (android nougat)
- python - LinearRegression in Python giving incorrect results?
- windows - Creating a secure desktop on current Windows Session (Winsta0\default)
- arrays - Having Several Read Operation Values be Appended to Array at Once - Swift & Firebase