gpt4 book ai didi

linux - 使用 awk 命令匹配多个模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:10 25 4
gpt4 key购买 nike

我的文件看起来像

10.183.227.46|242066391737|73633662;244809|com.com|com.com|2001|CCA-I|0|[29/Dec/2016:00:00:40]|26|RULE_31893406,RULE_31893405,RULE_416241598|4106,4105,4000|2006,2005,5000|0|0|0|0|2621440|3000|-|-|1003:0,1013:0,1010:Home|244809|0|117,115,40|-|-|

我想查看第 24 个字段包含 117 和第 6 个字段包含 2001 的文件

我正在使用

awk -F "|" '{if($6==2001 && $24==117)print }' 29_DEC_2016.1

但是因为第 24 个字段可以包含超过 1 个以逗号分隔的值我没有得到正确的结果

最佳答案

$ awk -F\| '$6=="2001" && $25 ~ /(^|,)117($|,)/' file

$6 等于 "2001"(不要只使用 2001,因为万一您要搜索 0 , $6==0 会导致隐式打印失败)并且 $25 恰好包含 117(前后为 start-of-string ^ 或 (|) 字符串结尾 或逗号 , (您可以输入空间以防万一))。

测试后半部分:

$ cat foo
117,2,3 # good
1,117,3 # good
1,2,117 # good
1117,2,3 # bad
1,1117,3 # bad
1,2,1177 # bad
$ awk '$1~/(^|,)117($|,)/' foo
117,2,3 # good
1,117,3 # good
1,2,117 # good

关于linux - 使用 awk 命令匹配多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41441896/

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