csv - 试图在列中获取包含“/ 2020”的行数
问题描述
我有一个大约 700 万行的大型数据集,我试图在 $2 列中查找日期中包含“/2020”的行数($2 是格式为 mm/dd/yyyy 的所有日期)。但是,awk
我尝试的所有命令要么给我 0,要么根本不打印任何东西,我不知道为什么。
awk -F',' '$2 == "/2020" { count++ } END { print count }' file.csv
什么都不打印
awk -v variable="2020" '$2 ~ variable' file.csv | wc -l
打印 0
awk ' BEGIN {count=0;} { if ($2 =="2020") count += 1} END {print count}' file.csv
打印 0
我会很感激一些帮助。谢谢!
解决方案
使用的语法是:
awk -F, '$2 ~ /\/2020/{cnt++} END {print cnt}' file.csv
==
将意味着第二个字段将与模式完全相同,而~
意味着它与模式匹配,只是字段的一部分可以像模式一样。
另请参阅GNU awk 手册的相关部分
此外,如果您添加了字段分隔符,您的第二次尝试将起作用,请注意,这里您只匹配没有斜线的年份。
awk -F, -v variable="2020" '$2 ~ variable' file.csv | wc -l
注意:假设文件中的引号字段中没有嵌套分隔符(逗号),至少对于前两个字段。如果有,则应使用更复杂的模式作为字段分隔符。
推荐阅读
- r - 如何在 x 轴的每一侧制作条形图
- json - BigQuery json 函数 - 如果 json 字符串格式不正确,则无法提取所有值
- reactjs - 如何在函数中传递 onChange 和 props
- google-apps-script - 共享 Google 数据洞察连接器,但不允许对脚本进行只读访问
- swift - 从具有不同背景选项的同一 iOS 应用程序投射音乐和视频不起作用
- javascript - 考虑向树中添加错误边界以自定义错误处理行为
- r - 在 TUKEY 测试中更改重要性字母的顺序
- r - 在没有 RSelenium 的情况下在 R 中抓取帧?
- react-native - 如何将对象映射到 Material-ui 输出
- azure - 如何创建 Azure API 网关资源?