如何快速将小写转大写?

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)
酷番叔酷番叔
上一篇 3小时前
下一篇 3小时前

相关推荐

  • PADS如何禁用宏命令?

    在PADS Layout/Router中禁用宏命令,可通过工具菜单关闭宏功能、删除自动加载的宏文件或修改注册表项实现永久禁用。

    2025年7月5日
    900
  • Win10/11命令提示符打开方法有哪些?

    本文介绍在 Windows 10 和 11 中打开命令提示符的多种详细方法,涵盖不同操作习惯,用户可选择最便捷的方式启动。

    2025年7月9日
    1200
  • 如何用命令行工具提升效率?

    命令行工具允许用户通过输入文本指令与操作系统交互,直接执行任务、管理系统、处理文件及运行程序,高效灵活且支持自动化。

    2025年6月17日
    1400
  • 如何用命令行快速打开文件?

    命令行本身不直接”打开”文件(如图形界面的双击操作),而是通过启动关联程序实现文件访问,原理如下:系统根据文件扩展名(如 .txt、.jpg)关联默认程序命令行调用该程序并传递文件路径作为参数不同操作系统的命令详解▍ Windows 系统基础命令start "" "文件路径&quo……

    2小时前
    200
  • MATLAB如何清除命令与变量?

    清除命令窗口显示内容目的:清空命令窗口的文字输出(屏幕显示),不影响变量和程序运行,方法:使用 clc 命令操作步骤:在命令窗口直接输入:clc按 Enter 键执行,屏幕瞬间清空,注意:clc 仅清除显示内容,工作空间中的变量仍保留(可通过 whos 查看),删除工作空间变量目的:释放内存,移除全部或指定变量……

    2025年6月21日
    1500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信