当前位置: 首页 > news >正文

高亮显示不一致

先准备好测试文件

[root@node4 ~]# cat 2.1
No.     Table Name     Src Count    Des Count    Result
1       sbtest1        100          100          PASS
2       sbtest2        200          300          NOTPASS
3       sbtest3        150          150          PASS
4       sbtest4        400          401          NOTPASS

如图:
在这里插入图片描述

准备好脚本

解决一:

#!/bin/bash# 设定颜色
RED_BACKGROUND='\033[41m'  # 红色背景
WHITE='red\033[0m'         # 白色字体
NO_COLOR='\033[0m'         # 重置颜色# 文件名
FILE_NAME="2.1"# 读文件并进行处理=
awk -v red1="$RED_BACKGROUND" -v white="$WHITE" -v nc="$NO_COLOR" 'BEGIN {FS="[ ]+"; OFS=" | "}
{if (NR==1) {# 打印标题行print $0;} else {# 对比第三和第四列if ($3 != $4) {# 如果不同,改变输出颜色print $1, $2, $3, $4, red1 whit$5nc;} else {# 如果相同,保持原样print $1, $2, $3, $4, $5  ;}}
}' $FILE_NAME

解决二:

awk 'BEGIN {FS="[ ]+";   # 字段分隔符设置为竖线加空格OFS=" | ";    # 输出字段分隔符同上RED="\033[1;31m";    # 设置红色高亮的ANSI码GREEN="\033[1;32m";  # 设置绿色高亮的ANSI码RESET="\033[0m";     # 重置颜色设置的ANSI码
}
NR==1 {print $0; next;}  # 打印标题行并继续
{if ($3 != $4) { # 比较“Src Count”和“Des Count”列print $1, $2, $3, $4, RED $5 RESET; # 如果不相同,打印红色高亮的“Result”} else {print $1, $2, $3, $4, GREEN $5 RESET; # 如果相同,打印绿色高亮的“Result”}
}' 2.1

可以通过以下命令赋予执行权限:

chmod +x 1.sh

然后再次运行脚本:

./1.sh

运行结果:
在这里插入图片描述

如果继续遇到问题,请确认以下几点:

  • 您的终端是否支持ANSI颜色代码。可以通过简单的echo语句测试,比如 echo -e "\033[41mRed Background\033[0m",这应该输出一个红色背景的文本。

  • 脚本中颜色代码的使用是否正确。请注意,颜色代码前应使用反斜杠(\)而不是正斜杠(/),并且颜色代码周围不能有多余的空格或字符。

  • 确保颜色代码对应的是bash shell的语法。如果您使用的是不同的shell,如zsh或fish,颜色代码的语法可能略有不同。

  • 尝试不要在脚本中使用变量,而是直接在print语以排除变量传递问题。

  • 当使用颜色代码时,需要确保在ANSI颜色代码后面紧跟着文本内容。例如,red white $5 nc 这种使用方式是错误的,因为它将颜色代码和变量混淆在一起了。

  • 结果显示为 “redPASS” 和 “redNOPASS”,这是因为 white 变量包含了字符串 “red”,而不是实际的颜色代码。

在这份脚本中,注意到以下几点:

  • awk 命令中使用 redwhitenc 的方式,确保它们都紧跟着它们需要修饰的文本。
  • 在打印不同颜色时,确保文本紧随颜色代码之后。

相关文章:

  • 【Docker与微服务】基础篇
  • centos7安装google chrome和chromium
  • ArcGIS Pro 按照字段进行融合或拆分
  • 一文讲透ast.literal_eval() eval() json.loads()
  • docker手动迁移镜像
  • mysql 锁知识汇总
  • 2024年:用OKR管理你的生活
  • 【Shell的运行原理以及Linux当中的权限问题】
  • nginx flv模块的使用和源码分析
  • 嵌入式中C 语言中的三块技术难点
  • Python 处理小样本数据的文档分类问题
  • k8s 部署 nocas 同时部署mysql
  • 备战蓝桥杯---搜索(剪枝)
  • CSS 闪电按钮效果
  • js正则综合练习1
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • eclipse的离线汉化
  • HTTP 简介
  • Java深入 - 深入理解Java集合
  • Node项目之评分系统(二)- 数据库设计
  • Redis的resp协议
  • SpingCloudBus整合RabbitMQ
  • windows下如何用phpstorm同步测试服务器
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 巧用 TypeScript (一)
  • 一个项目push到多个远程Git仓库
  • 原生js练习题---第五课
  • gunicorn工作原理
  • 阿里云ACE认证之理解CDN技术
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​iOS安全加固方法及实现
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #图像处理
  • $.ajax()
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (27)4.8 习题课
  • (Note)C++中的继承方式
  • (附源码)ssm码农论坛 毕业设计 231126
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)jQuery 基础
  • (转)关于多人操作数据的处理策略
  • .bat批处理出现中文乱码的情况
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .netcore如何运行环境安装到Linux服务器
  • .NET关于 跳过SSL中遇到的问题
  • .Net环境下的缓存技术介绍
  • .NET上SQLite的连接
  • .net下的富文本编辑器FCKeditor的配置方法
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件