Ben*_*old 9 linux grep sed find stderr
我sed
最近开始使用。我使用它的一种方便的方法是忽略日志文件中不重要的行:
tail -f example.com-access.log | sed '/127.0.0.1/d;/ELB-/d;/408 0 "-" "-"/d;'
Run Code Online (Sandbox Code Playgroud)
但是当我尝试与 类似地使用它时find
,结果并不如预期。我试图忽略包含“权限被拒绝”的任何行,如下所示:
find . -name "openssl" | sed '/Permission denied/d;'
Run Code Online (Sandbox Code Playgroud)
但是,我仍然在stdout
.
编辑
正如下面的正确答案中提到的,“权限被拒绝”消息出现在stderr
和 NOT 中stdout
。
cuo*_*glm 18
问题是错误输出打印到stderr,因此sed
命令无法捕获输入。简单的解决方案是:将 stderr 重定向到 stdout。
find . -name "openssl" 2>&1 | sed '/Permission denied/d;'
Run Code Online (Sandbox Code Playgroud)
小智 16
我不确定您为什么要尝试使用从输出中sed
删除权限被拒绝的消息find
- 除非您正在尝试学习如何使用sed
.
我会简单地运行这个:
找 。-name "openssl" 2>/dev/null
在这里,我将stderr(文件描述符2)重定向到/dev/null
(请参阅man null
)。换句话说,2>/dev/null
只需丢弃写入stderr 的所有内容。
归档时间: |
|
查看次数: |
24626 次 |
最近记录: |