需要帮助使用Bash和sed着色/替换任意字符串
发布时间:2020-12-15 20:55:52 所属栏目:安全 来源:网络整理
导读:我正在使用基于此处使用的技术的bash脚本: Get color output in bash为我的构建和其他脚本的输出着色以使事情更容易阅读.我的构建中的一个步骤执行“git pull”,git服务器在一堆其他输出中吐出这样的“欢迎”字符串: ** WARNING: THIS IS A PRIVATE NETWOR
我正在使用基于此处使用的技术的bash脚本:
Get color output in bash为我的构建和其他脚本的输出着色以使事情更容易阅读.我的构建中的一个步骤执行“git pull”,git服务器在一堆其他输出中吐出这样的“欢迎”字符串:
** WARNING: THIS IS A PRIVATE NETWORK. UNAUTHORIZED ACCESS IS PROHIBITED. ** Use of this system constitutes your consent to interception,monitoring,and recording for official purposes of information related to such use,including criminal investigations. 我想将此特定消息的颜色设置为黄色,或者可能将其从输出中删除,同时仅保留输出的其余部分.我试过替换这样一个简单的字符串: WelcomeMessage="WARNING" pathpat=".*" ccred=$(echo -e " 33[0;31m") ccyellow=$(echo -e " 33[0;33m") ccend=$(echo -e " 33[0m") git pull 2>&1 | sed -r -e "/$WelcomeMessage/ s%$pathpat%$ccyellow&$ccend%g" 欢迎字符串的第一行按预期显示为黄色,但其余行不显示.我真的想要为确切的欢迎字符串着色,只有那个字符串,但由于很多原因,这不起作用: WelcomeMessage="** WARNING: THIS IS A PRIVATE NETWORK. UNAUTHORIZED ACCESS IS PROHIBITED. ** Use of this system constitutes your consent to interception,including criminal investigations." pathpat=".*" ccred=$(echo -e " 33[0;31m") ccyellow=$(echo -e " 33[0;33m") ccend=$(echo -e " 33[0m") git pull 2>&1 | sed -r -e "/$WelcomeMessage/ s%$pathpat%$ccyellow&$ccend%g" 这失败并出现错误:sed:-e expression#1,char 78:unterminated address regex 我已经看了几个其他的问题,我能够让星号转义(通过在它们前面加上反斜杠),但我对这些时期和多行感到困惑.我想继续使用sed来解决这个问题,因为它与着色解决方案很好地集成. 任何帮助表示赞赏.谢谢! 解决方法
以下将从**的第一个实例到句点的第一个实例的每一行以黄色着色.那不是同一条线.这将匹配写入的整个警告消息.
NORMAL=$(tput sgr0) YELLOW=$(tput setaf 3) git pull 2>&1 | sed "/**/,/./s/.*/$YELLOW&$NORMAL/" 注意:如果要删除邮件,可以使用以下命令: git pull 2>&1 | sed '/**/,/./d' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |