grep 查找“print”而不是“#print”

grep 查找“print”而不是“#print”

在调试中,我使用了大量的“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

相关内容