You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中为CSV文件设置标题加粗及差异内容红色显示?

解决方案

核心问题说明

你之前的代码未生效,主要是缺少颜色重置转义码,且没有对diff的每一行内容应用红色格式。终端显示加粗/颜色依赖ANSI转义码,需确保变量定义和输出逻辑正确。

完整Shell脚本示例

# 定义ANSI格式转义码
BOLD='\033[1m'       # 加粗样式
RED='\033[0;31m'     # 红色字体
RESET='\033[0m'      # 重置所有格式(必须添加,避免后续文本继承样式)

# 1. 输出带加粗标题的CSV内容(左右并列两个文件)
printf "${BOLD}source,target${RESET}\n"
# 使用paste命令将两个文件按行合并为CSV格式(逗号分隔)
paste -d ',' file1.txt file2.txt

# 2. 输出红色高亮的diff差异
printf "\n${RED}DIFFERENCES${RESET}\n"
# 对diff的每一行前后添加红色转义码,确保所有差异内容变红
diff file1.txt file2.txt | sed "s/^/${RED}/; s/$/${RESET}/"

关键细节解释

  1. 格式重置:RESET变量必须在每个格式化文本后添加,否则终端会一直保持当前样式(比如持续显示红色)。
  2. diff内容高亮:通过sed对diff输出的每一行开头加红色转义、结尾加重置转义,实现整行差异内容变红。
  3. 终端兼容性:大部分现代终端(如bash、zsh、iTerm2、GNOME Terminal)都支持ANSI转义码,若显示异常可检查TERM变量是否为xterm-256color或类似值(执行echo $TERM查看)。

注意事项

如果需要将带格式的内容写入CSV文件,普通CSV阅读器(如Excel)会显示ANSI转义码乱码,因此更推荐仅在终端输出时应用格式,CSV文件本身保持纯文本格式。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:13:11