【发布时间】:2013-05-23 16:22:39
【问题描述】:
我正在尝试通过大量旧 PowerBASIC 源文件 grep 来搜索变量,但我无法获取 grep 以避免匹配行尾 cmets 中对变量的引用。
例如:
ANGLE = 40 ' THIS IS A COMMENT ABOUT ANGLE'S VALUE
FOO = 3/ANGLE ' ANGLE CAN APPEAR ON RIGHT SIDE AS WELL
DELTA = 35 ' ANGLE AND DELTA AREN'T FRIENDS
最初我使用的是:
# grep "\bANGLE\b.*'" SRC_FILE.BAS
但是——除了忽略没有 cmets 的行——它还会打印出根本不使用ANGLE 的代码行(例如DELTA 行)。这是因为这些行在其 cmets(即AREN'T)中也恰好有一个单个撇号(')。
我想通过管道输出来删除我不想要的行:
# grep "\bANGLE\b" SRC_FILE.BAS | grep -v "'.*\bANGLE\b"
但不幸的是,它也删除了我确实希望他们的 cmets 中恰好有“ANGLE”的代码行。
如何让 grep 匹配涉及 ANGLE 的实际代码行,并忽略 cmets 中 only 匹配的那些行?
【问题讨论】:
标签: regex grep basic non-greedy powerbasic