【发布时间】:2014-09-15 22:08:23
【问题描述】:
我有一个文本文件,我需要在一个字段中识别特定模式。我正在使用 AWK,并尝试使用 match() 函数。
要求是我需要查看一串数字中是否存在以下模式
??????1?
??????3?
??????5?
??????7?
也就是说,我只对最后一位数字是 1、3、5 或 7 感兴趣。
我有一个解决方案,看起来像这样;
b = match($23, "[0-9][0-9][0-9][0-9][0-9][0-9]1[0-9]")
c = match($23, "[0-9][0-9][0-9][0-9][0-9][0-9]3[0-9]")
d = match($23, "[0-9][0-9][0-9][0-9][0-9][0-9]5[0-9]")
e = match($23, "[0-9][0-9][0-9][0-9][0-9][0-9]7[0-9]")
if (b || c || d || e)
{
print "Found a match" $23
}
我认为虽然我应该能够像这样更简洁地编写正则表达式;
b = match($23, "[0-9]{6}1[0-9]")
但这不起作用。
我是否遗漏了什么,或者我的正则表达式技能(不是很好)真的那么糟糕?
感谢期待
【问题讨论】:
-
您一定对第 23 个字段感兴趣吗?我们能看到一整行数据吗?您的脚本的其余部分是否以任何方式转换该行?