我尝试对emacs的find-grep的结果执行grep,所以我使用以下命令:
查找.\ xargs .\ grep -v“包括”
结果显示我是grep缓冲区,但当我在试图进入该文件的每个条目上按enter时,emacs表示该文件不存在。在小型缓冲区中,在文件的完整路径之前,有一个^[[K字符]。这基本上使整个文件名无法识别。我翻阅了grep的手册,仍然不确定我能做些什么。
我可能不需要这样做,但我不知道如何传递两种模式,一种是针对grep,另一种是逆grep。(可能是正则表达式?)
有人对此有什么建议吗?
解决方案:
我是在星图5.5机器上做这个的。结果发现,由于grep的旧版本,这是一个问题。我在主目录中安装了最新版本的grep,现在一切都很好。
发布于 2011-04-05 17:18:31
在通过注释“调试”问题之后,这是一个适合您的解决方案。将其添加到您的.emacs中并自定义它,以便regexp与您希望从文件名:^[[K中删除的特殊字符匹配。
(defadvice compilation-find-file (before compilation-find-file-strip-odd-chars activate)
"Strip the ^[[K in the input string"
(let ((filename (ad-get-arg 1)))
(save-match-data
(when (string-match "^\\[\\[K" filename)
(ad-set-arg 1 (replace-match "" nil nil filename))))))发布于 2012-06-06 06:41:24
我有同样的问题,但无法改变我的版本的grep,所以我使用了一个解决办法。问题似乎是行的结尾,所以我只需通过awk运行grep的结果并按原样打印它们。
... | grep -v blaa | awk '{print $0}'这解决了我的问题,虽然我不知道为什么。
https://stackoverflow.com/questions/5517877
复制相似问题