如何在tee与sed的组合命令中集成grep过滤规则?
如何在tee与sed的组合命令中集成grep过滤规则?
嗨,我来帮你搞定这个问题!你当前的命令已经能很好地去除输出里的颜色控制代码,并把干净的内容追加到目标文件里。现在要过滤掉以#开头的注释行和空行,其实只需要把grep的过滤步骤插在sed处理之前就可以了——毕竟我们应该先把不需要的行筛掉,再去处理颜色代码,避免做无用功。
直接给你修改后的完整命令:
# 替换成你自己的原始命令,比如ls -l或者其他输出命令 你的原始命令 | tee >(grep -v '^#' | grep -v '^$' | sed $'s/\033[[][^A-Za-z]*[A-Za-z]//g' >> ~user/filepath/file.txt)
如果你觉得两个grep命令有点繁琐,还可以用扩展正则表达式把它们合并成一个,看起来更简洁:
你的原始命令 | tee >(grep -Ev '^#|^$' | sed $'s/\033[[][^A-Za-z]*[A-Za-z]//g' >> ~user/filepath/file.txt)
这里-E选项让grep支持扩展正则,用|分隔两个要排除的模式(^#表示以#开头,^$表示空行),效果和两个grep是完全一样的。
简单来说,就是在tee指向的进程替换里,把过滤步骤放在sed之前,这样经过grep筛掉不需要的行之后,再交给sed去除颜色代码,最后才追加到文件里,完美实现你的需求~
备注:内容来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

