1

我有一个 ignore.txt 文件:

cat ignore.txt
clint

当我做:

pip freeze | grep -v -f ignore.txt

我得到:

GitPython==0.3.2.RC1  
Markdown==2.2.1  
async==0.6.1  
clint==0.3.1  
gitdb==0.5.4  
legit==0.1.1  
push-to-wordpress==0.1  
python-wordpress-xmlrpc==2.2  
smmap==0.8.2 

但是当我这样做时:

pip freeze | grep -v clint

我确实得到了正确的输出:

GitPython==0.3.2.RC1
Markdown==2.2.1
async==0.6.1
gitdb==0.5.4
legit==0.1.1
push-to-wordpress==0.1
python-wordpress-xmlrpc==2.2
smmap==0.8.2

如何使用 grep 和命令行工具实现这一点?

澄清编辑:我在 cygwin 中使用 windows,所以我相信这是 GNU grep 2.6.3(来自 grep --version)

4

1 回答 1

1

您的语法看起来正确并且适用于我的系统。ignore.txt您的文件可能有问题。特别是,检查:

  • 您要过滤的单词周围没有前导或尾随空格、制表符等(如上面 Kent 所建议的那样)
  • 该文件具有 Unix 行结尾
  • 该文件由一个换行符终止

关于后者,Single Unix Specification说:

pattern_file中的模式应以<newline>.

这意味着没有终止符或具有不同终止符(例如 CR LF)的文件可能会出现意外行为(尽管这可能与系统相关)。

于 2013-03-12T23:51:08.817 回答