如何快速将小写转大写?

tr(translate)是 Linux/Unix 中用于字符替换、删除或压缩的文本处理工具,它直接处理标准输入(stdin),输出到标准输出(stdout),是 Shell 脚本中高频使用的命令之一。


核心语法格式

tr [选项] SET1 [SET2]
  • SET1:要操作的原字符集
  • SET2:替换后的目标字符集(若未指定,则默认删除操作)
  • 重要特性tr 按字符(非单词)逐字处理文本。

常用选项速查

选项 作用
-d 删除 SET1 中的字符
-s 压缩连续重复字符(去重)
-c 对 SET1 的补集操作(即“非 SET1 的字符”)
-t 将 SET1 截断为与 SET2 等长(避免多字符替换)

高频使用场景详解

字符替换(基础)

# 输出:HELLO WORLD
# 替换特定字符(如空格变下划线)
echo "file name.txt" | tr ' ' '_'
# 输出:file_name.txt
# 加密:ROT13 算法(字母偏移13位)
echo "secret" | tr 'a-zA-Z' 'n-za-mN-ZA-M'
# 输出:frperg

删除字符(-d

# 删除所有数字
echo "phone: 123-456" | tr -d '0-9'
# 输出:phone: -
# 删除换行符(合并多行为单行)
tr -d '\n' < input.txt
# 删除非数字字符(结合 `-c`)
echo "a1b2c3" | tr -cd '0-9'
# 输出:123

压缩重复字符(-s

# 压缩连续空格为单空格
echo "too    many spaces" | tr -s ' '
# 输出:too many spaces
# 压缩重复字母(如多个换行变一个)
echo -e "a\n\n\nb" | tr -s '\n'
# 输出:
# a
# b

字符集等价类(预定义字符组)

tr 支持 POSIX 字符类,简化常见匹配:

# 删除所有标点符号
echo "Hello! How are you?" | tr -d '[:punct:]'
# 输出:Hello How are you
# 常用等价类:
# [:alnum:] 字母+数字  [:digit:] 数字     [:lower:] 小写字母
# [:upper:] 大写字母   [:space:] 空白符   [:alpha:] 字母

进阶技巧

  • 保留换行符:用 \n 显式指定
    echo -e "a\nb\nc" | tr 'a-c' 'x-z'  # 替换字母但保留换行
  • 十六进制转义:用 \xNN 表示特殊字符
    echo "data" | tr 'a' '\x01'  # 将 'a' 替换为 ASCII 0x01

避坑指南

  1. 不支持正则表达式
    tr 仅处理单个字符,不支持 、 等正则元字符。
    错误示例tr 'abc' 'def' 不会替换字符串 “abc”,而是分别替换 a→d、b→e、c→f。

  2. 字符集长度需匹配
    SET1SET2 长,SET2 会重复最后一个字符补齐:

    echo "abc" | tr 'abcd' 'XYZ'  # a→X, b→Y, c→Z, d→Z
  3. 处理二进制文件需谨慎
    tr 可能破坏二进制数据(如图片、可执行文件),建议仅用于文本。


典型应用场景

  • 日志清洗:删除无关字符或压缩空格
  • 数据格式化:CSV 文件分隔符转换(如逗号转制表符)
  • 密码生成:结合 /dev/urandom 生成随机字符串
    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 12

tr 是 Linux 文本处理的“瑞士军刀”,以简洁高效著称,虽然功能单一(仅限字符级操作),但在管道命令组合中不可或缺,掌握其核心用法(替换、删除、压缩)和字符集规则,可大幅提升命令行文本处理效率。

引用说明参考 Linux man-pages (tr 1.0) 及 GNU Coreutils 文档,结合常见运维实践整理。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8192.html

(0)
酷番叔酷番叔
上一篇 2025年7月21日 08:05
下一篇 2025年7月21日 08:25

相关推荐

  • 凹凸网址域名是什么?它有哪些独特优势?

    在互联网生态中,域名作为网站的“数字身份证”,不仅是访问入口,更是品牌价值与用户信任的载体,对于“凹凸”这一关键词相关的域名而言,其应用场景覆盖品牌官网、兴趣社群、创意项目等多个领域,选择与管理合适的凹凸网址域名,成为构建线上身份的重要环节,本文将从域名的构成逻辑、注册策略、应用场景及注意事项等维度,系统解析凹……

    2025年10月20日
    3600
  • access宏命令中怎么注释

    Access宏中,可通过添加“注释”操作或使用“’”符号来对宏命令

    2025年8月14日
    5100
  • 百度智能云登录怎么操作?

    百度智能云作为百度公司旗下的企业级智能云计算服务平台,致力于为政府、金融、工业、互联网等各行各业提供稳定、安全、高效的云计算、人工智能、大数据、物联网等一站式智能云服务,用户在使用百度智能云的各项服务前,首先需要完成登录操作,这是进入云服务管理控制台、调用API接口、管理资源的前提步骤,百度智能云的登录流程设计……

    2025年11月26日
    1300
  • 安全合规排行榜能否真实反映企业合规水平?

    安全合规排行榜是通过第三方机构对企业在法律法规遵循、数据安全管理、技术防护能力等方面的系统性评估形成的排名,旨在为行业提供合规参考,帮助用户识别风险对象,推动企业提升安全合规水平,这类榜单通常基于多维量化指标,结合行业实践与监管要求,成为企业合规建设的重要参考工具,评选安全合规排行榜的核心指标涵盖多个维度,以下……

    2025年10月18日
    2900
  • 如何将a数据库表导入到b数据库?

    将一个数据库表导入到另一个数据库是一项常见的数据迁移任务,广泛应用于系统升级、数据整合、备份恢复等场景,这一过程需要确保数据的完整性、一致性和安全性,同时兼顾操作效率和便捷性,本文将详细介绍从数据库表导入的准备工作、常用方法、操作步骤及注意事项,帮助读者顺利完成数据迁移任务,准备工作在开始数据导入之前,充分的准……

    2025年11月24日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信