我正在尝试用 grep 匹配一堆文件中的模式。这些文件包含 G 代码(CNC 机器代码)。每个数字都应该有一个与之关联的字母(例如:X4.5、G71、Z-0.75)。许多文件有拼写错误并且缺少字母。我正在尝试使用 grep 通过匹配文件中没有紧跟字母的任何十进制数字来识别这些文件。但是,如果模式出现在括号内,我不想匹配相同的模式。括号中的任何内容都是注释,不应与正则表达式匹配。
测试文本:
%
O01934 (AWC C011469)
(MATL: 4.0 X 2.0 X A020)
N90 G00 4.2 z0.1
Z0.1125 F0.004
N150 X2.2 .01 (inline comment)
0.03
第 3 行在技术上包含我正在寻找的模式,但我不想匹配它,因为它在括号内。
第 4、6、7 行是我尝试匹配的模式的示例。数字前面没有字母,也没有括号内。
我已经在 regextester.com 上呆了一个多小时,现在我头疼。也许更熟悉正则表达式的人可以提供帮助。
我能想到的最好的模式是([[:space:]]|^)-?[[:digit:]]*\.[[:digit:]]+([[:space:]]|$)
. 这与我想要的 4、6 和 7 匹配。但也匹配第 3 行注释中的数字。我不知道如何匹配一个而不是另一个。