在调试中,我使用了大量的“print”并用“#print”注释掉它。如何使用 grep 查找“print”之前没有“#”的行?
# print <- not detect
#print <- not detect
abc # print <-- not detect
print <- detect
答案1
grep '^[^#]*print'
print
前面只能有非 # 字符。
答案2
经典解决方案:
grep -v '^#' <input |grep 'print'
答案3
最简单的方法可能是使用两个grep
通过管道连接在一起的。
$ grep 'print' <input | grep -v '#[[:space:]]*print'
input
使用包含示例的文件,可以得到:
print <- detect
这适用于您的所有示例。这可能已经足够好了,但正如我和 manatwork 在评论中指出的那样,用grep
.
答案4
我还在学习,但是 ff 也能工作吗?
grep -v '#[ ]*print' input_file