首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWK模式匹配结果错误

AWK模式匹配结果错误
EN

Stack Overflow用户
提问于 2021-03-04 17:33:24
回答 2查看 40关注 0票数 1

我有以下命令

代码语言:javascript
复制
$ awk -v p=502013514208295320210301 '-F"' '$6==p' inputfile.txt

输入文件包含以下行

代码语言:javascript
复制
"2021-03-01"|"AUTO"|"50310040379713492021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024660748"|"4037971349"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.8945"|"MB"|"ACTIVE"|"20210301110305"
"2021-03-01"|"AUTO"|"50310040343788162021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024660773"|"4034378816"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.8682"|"MB"|"ACTIVE"|"20210301110306"
"2021-03-01"|"AUTO"|"50309964761428982021030120210324"|"PPU_ROAM_BELL_CONSUMER"|"PPU"|"302610033244797"|"6476142898"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"98"|"98"|"CAD"|"ACTIVE"|"20210301060312"
"2021-03-01"|"AUTO"|"502007418564386720210219"|"CORP_US_7GB_CAP"|"SOC"|"302610024671577"|"4185643867"|"2021-02-19"|"2021-02-19"|"NOT AVAILABLE"|"NOT AVAILABLE"|"7168"|"5.0508"|"MB"|"ACTIVE"|"20210301110312"
"2021-03-01"|"AUTO"|"50310040382948922021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024670673"|"4038294892"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"3.0488"|"MB"|"ACTIVE"|"20210301110336"
"2021-03-01"|"AUTO"|"502013514208295320210201"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-02-01"|"2021-02-01"|"2021-03-01"|"NOT AVAILABLE"|"25600"|"322.834"|"MB"|"EXPIRED"|"20210301120317"
"2021-03-01"|"AUTO"|"50310090530187832021020920210309"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610023679066"|"9053018783"|"2021-02-09"|"2021-02-09"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"6.5195"|"MB"|"ACTIVE"|"20210301070346"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"50310090530140952021020920210309"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024354632"|"9053014095"|"2021-02-09"|"2021-02-09"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"6.3232"|"MB"|"ACTIVE"|"20210301090332"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"50310040354297052021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024661575"|"4035429705"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.9463"|"MB"|"ACTIVE"|"20210301110355"

当前输出如下所示。

代码语言:javascript
复制
    "2021-03-01"|"AUTO"|"502013514208295320210201"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-02-01"|"2021-02-01"|"2021-03-01"|"NOT AVAILABLE"|"25600"|"322.834"|"MB"|"EXPIRED"|"20210301120317"
    "2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
    "2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
    "2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"

既然我只搜索502013514208295320210301,为什么502013514208295320210201会显示在awk结果中。我只需要用502013514208295320210301打印结果

EN

回答 2

Stack Overflow用户

发布于 2021-03-04 17:37:11

只有你展示的样品,你可以尝试以下。使用GNU awk进行测试和编写。

代码语言:javascript
复制
awk -M -F'"\\|"'  -v p="502013514208295320210301" '$3==p'  Input_file

解释:只是简单地将字段分隔符作为Input_file的所有行的"|"。创建变量p=502013514208295320210201,然后在主要部分检查条件,如果第三个字段等于p,如果是,则打印该行。为什么你的比较不起作用,你的数字太大,awk无法理解,所以使用GNU awk-M选项,我们可以处理这个问题。

票数 1
EN

Stack Overflow用户

发布于 2021-03-04 17:50:28

在这种情况下,您可以使用字符串比较(事实值是封闭的,"建议它们应该是字符串),以避免出现过大数字的问题。让file.txt内容成为

代码语言:javascript
复制
"2021-03-01"|"AUTO"|"50310040379713492021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024660748"|"4037971349"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.8945"|"MB"|"ACTIVE"|"20210301110305"
"2021-03-01"|"AUTO"|"50310040343788162021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024660773"|"4034378816"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.8682"|"MB"|"ACTIVE"|"20210301110306"
"2021-03-01"|"AUTO"|"50309964761428982021030120210324"|"PPU_ROAM_BELL_CONSUMER"|"PPU"|"302610033244797"|"6476142898"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"98"|"98"|"CAD"|"ACTIVE"|"20210301060312"
"2021-03-01"|"AUTO"|"502007418564386720210219"|"CORP_US_7GB_CAP"|"SOC"|"302610024671577"|"4185643867"|"2021-02-19"|"2021-02-19"|"NOT AVAILABLE"|"NOT AVAILABLE"|"7168"|"5.0508"|"MB"|"ACTIVE"|"20210301110312"
"2021-03-01"|"AUTO"|"50310040382948922021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024670673"|"4038294892"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"3.0488"|"MB"|"ACTIVE"|"20210301110336"
"2021-03-01"|"AUTO"|"502013514208295320210201"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-02-01"|"2021-02-01"|"2021-03-01"|"NOT AVAILABLE"|"25600"|"322.834"|"MB"|"EXPIRED"|"20210301120317"
"2021-03-01"|"AUTO"|"50310090530187832021020920210309"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610023679066"|"9053018783"|"2021-02-09"|"2021-02-09"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"6.5195"|"MB"|"ACTIVE"|"20210301070346"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"50310090530140952021020920210309"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024354632"|"9053014095"|"2021-02-09"|"2021-02-09"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"6.3232"|"MB"|"ACTIVE"|"20210301090332"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"50310040354297052021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024661575"|"4035429705"|"2021-02-21"|"2021-02-21"|"NOT AVAILABLE"|"NOT AVAILABLE"|"1024"|"2.9463"|"MB"|"ACTIVE"|"20210301110355"

然后

代码语言:javascript
复制
awk 'BEGIN{FS="\""}($6=="502013514208295320210301"){print}' file.txt

输出

代码语言:javascript
复制
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
"2021-03-01"|"AUTO"|"502013514208295320210301"|"CORP_EXCLUSION_LIST_US_25GB"|"SOC"|"302610017663970"|"5142082953"|"2021-03-01"|"2021-03-01"|"NOT AVAILABLE"|"NOT AVAILABLE"|"25600"|"18.0635"|"MB"|"ACTIVE"|"20210301110311"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66472244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档