我正在尝试使用grep在很多旧的PowerBASIC源文件中搜索变量,但是我在尝试排除匹配行末注释中变量引用时遇到了困难。
例如:
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
的实际代码行,并忽略那些仅在注释中匹配的行?