我正在尝试通过大量旧的 PowerBASIC 源文件进行 grep 以搜索变量,但我无法获取 grep
以避免在末尾匹配对变量的引用-行评论。
例如:
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
但是——除了忽略没有注释的行——它还会打印出根本不使用 ANGLE
的代码行(例如 DELTA
行) .这是因为这些行恰好在它们的注释(即 AREN'T
)中也有一个单撇号('
)。
我想通过管道输出来删除我不想要的行:
# grep "\bANGLE\b" SRC_FILE.BAS | grep -v "'.*\bANGLE\b"
但不幸的是,它也删除了我确实想要的代码行,这些代码行恰好在他们的评论中有“ANGLE
”。
如何让 grep 匹配涉及 ANGLE
的实际代码行并忽略那些在注释中仅匹配的行?
最佳答案
grep "^[^']*\bANGLE\b" SRC_FILE.BAS
这只匹配 ANGLE
左边的所有内容不包括 '
的行。会出现类似jnylen's solution的问题如果字符串中有撇号。
关于regex - grep regex忽略行尾的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719105/