jeffinier 发表于 2018-08-09 16:37

怎么过滤命令行出输出的标准错误呢?

本帖最后由 jeffinier 于 2018-08-09 16:39 编辑

我执行的命令有大量的标准错误"warning ###### server1 server2 ...." 会直接输出到屏幕上我想保留除#外的所有内容, 并且输出到屏幕(即不输出#到屏幕),目前的笨办法是把错误重定向到文件再对文件进行sed处理,然后再打印出,有没有一步到位更好的办法呢? (我试过直接在命令行后用管道无法捕获标准错误)

本友会机友会摄友会 发表于 2018-08-09 17:07

Shell_HAT 发表于 2018-08-10 17:10

xxx 2>&1 | sed yyy

wh7211 发表于 2018-08-10 18:42

回复 1# jeffinier

<command> 2>&1|awk '{gsub("#","")}1'

jeffinier 发表于 2018-08-13 12:26

回复 3# Shell_HAT

可能你没明白我的意思, 2>&1后用 sed 无法实现输出到屏幕,因为sed无法捕获输入

wh7211 发表于 2018-08-13 14:26

回复 5# jeffinier


我执行的命令有大量的标准错误"warning ###### server1 server2 ...." 会直接输出到屏幕上我想保留除#外的所有内容, 并且输出到屏幕(即不输出#到屏幕)
不存在“aa###aa”这个文件
ls aa###aa
ls: aa###aa: 没有那个文件或目录
输出中去掉“#”
ls aa###aa 2>&1|awk '{gsub("#","")}1'
ls: aaaa: 没有那个文件或目录

本友会机友会摄友会 发表于 2018-08-13 15:08

Shell_HAT 发表于 2018-08-16 13:08

回复 5# jeffinier


# xxx | sed 's/xxx//'
-bash: xxx: command not found

# xxx 2>&1 | sed 's/xxx//'
-bash: : command not found

能否举例说明“sed无法捕获输入”是什么意思?
页: [1]
查看完整版本: 怎么过滤命令行出输出的标准错误呢?