欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

tr -dc 'a-zA-Z0-9' 详解 AG chatgpt 有大用

tr -dc 'a-zA-Z0-9' 详解

tr -dc 'a-zA-Z0-9' 是一个常用的命令行工具,用于 过滤字符。它的作用是删除输入中所有不在指定字符集(a-zA-Z0-9)中的字符,只保留字母(大小写)和数字。以下是对这条命令的详细解释:


1. tr 命令简介

  • tr(全称 translate)是一个 Unix/Linux 命令行工具,用于 字符转换或删除

  • 它可以处理标准输入(从键盘或管道输入),并将结果输出到标准输出。


2. tr 的常用选项

  • -d:删除指定的字符。

  • -c:补集操作,表示保留指定字符集以外的字符。

  • '字符集':指定要操作的字符。


3. tr -dc 'a-zA-Z0-9' 的详细解释

  • -d:删除指定的字符。

  • -c:补集操作,表示对字符集 取反

  • 'a-zA-Z0-9':指定的字符集,包括:

    • 小写字母:a-z

    • 大写字母:A-Z

    • 数字:0-9

整体作用

  • 删除所有不在 a-zA-Z0-9 字符集中的字符。

  • 保留所有字母(大小写)和数字。


4. 示例

示例输入

bash

"Hello123!@# World456"    


运行命令

bash

echo "Hello123!@# World456" | tr -dc 'a-zA-Z0-9'    


输出结果

bash

Hello123World456    


解释

  • 输入字符串中的特殊字符 !@# 和空格被删除。

  • 只保留了字母(HelloWorld)和数字(123456)。


5. 应用场景

  1. 生成随机密码

  • 过滤掉随机字符串中的特殊字符,只保留字母和数字。

  • 例如:

    bash

    OTP=$(openssl rand -base64 6 | tr -dc 'a-zA-Z0-9')                

           

  • 清理数据

    • 从文本中删除不需要的字符,例如标点符号、空格等。

  • 提取特定字符

    • 从复杂字符串中提取出字母和数字部分。


    6. 进一步扩展

    • 包含特殊字符: 如果需要保留某些特殊字符(如 !@#$%^&*),可以修改字符集:

      bash

      tr -dc 'a-zA-Z0-9!@#$%^&*'            

         

    • 只保留数字: 如果只想保留数字:

      bash

      tr -dc '0-9'            

         

    • 只保留字母: 如果只想保留字母(大小写):

      bash

      tr -dc 'a-zA-Z'            

         


    总结

    tr -dc 'a-zA-Z0-9' 是一个强大的字符过滤工具,用于删除所有非字母和数字的字符,只保留字母和数字。它在数据处理、随机密码生成等场景中非常有用。


    tr -dc  其中 d 和 c 分别是什么英文的缩写

    tr 命令中的 -d 和 -c 是 选项,它们分别代表以下含义:


    1. -d

    • 全称delete(删除)。

    • 作用:删除输入中的指定字符。

    • 示例

      bash

      echo "Hello123!" | tr -d '0-9'

      输出:

      Hello!
      
      • 删除输入中的所有数字。


    2. -c

    • 全称complement(补集)。

    • 作用:对指定的字符集取反操作。即保留字符集以外的字符,删除字符集内的字符。

    • 示例

      bash

      echo "Hello123!" | tr -c 'a-zA-Z' '\n'

      输出:

      Hello
      
      
      • 保留了字母,其他字符被替换为换行符(\n)。


    tr -dc 组合使用

    • -d:删除字符。

    • -c:取反字符集。

    • 组合作用:删除所有不在指定字符集中的字符。

      • -c 'a-zA-Z0-9':保留字母和数字。

      • -d:删除其他字符。

    示例

    bash

    echo "Hello123!@#" | tr -dc 'a-zA-Z0-9'

    输出:

    Hello123
    

    总结

    • -ddelete,删除指定字符。

    • -ccomplement,对字符集取反操作。

    • tr -dc 组合用于删除所有不在指定字符集中的字符。



    普通分类: