欢迎各位兄弟 发布技术文章
这里的技术是共享的
tr -dc 'a-zA-Z0-9' 详解
tr -dc 'a-zA-Z0-9'
是一个常用的命令行工具,用于 过滤字符。它的作用是删除输入中所有不在指定字符集(a-zA-Z0-9
)中的字符,只保留字母(大小写)和数字。以下是对这条命令的详细解释:
tr
命令简介
tr
(全称 translate)是一个 Unix/Linux 命令行工具,用于 字符转换或删除。
它可以处理标准输入(从键盘或管道输入),并将结果输出到标准输出。
tr
的常用选项
-d
:删除指定的字符。
-c
:补集操作,表示保留指定字符集以外的字符。
'字符集'
:指定要操作的字符。
tr -dc 'a-zA-Z0-9'
的详细解释
-d
:删除指定的字符。
-c
:补集操作,表示对字符集 取反。
'a-zA-Z0-9'
:指定的字符集,包括:
小写字母:a-z
大写字母:A-Z
数字:0-9
删除所有不在 a-zA-Z0-9
字符集中的字符。
保留所有字母(大小写)和数字。
bash
"Hello123!@# World456"
bash
echo "Hello123!@# World456" | tr -dc 'a-zA-Z0-9'
bash
Hello123World456
输入字符串中的特殊字符 !@#
和空格被删除。
只保留了字母(Hello
, World
)和数字(123
, 456
)。
生成随机密码:
过滤掉随机字符串中的特殊字符,只保留字母和数字。
例如:
bash
OTP=$(openssl rand -base64 6 | tr -dc 'a-zA-Z0-9')
清理数据:
从文本中删除不需要的字符,例如标点符号、空格等。
提取特定字符:
从复杂字符串中提取出字母和数字部分。
包含特殊字符: 如果需要保留某些特殊字符(如 !@#$%^&*
),可以修改字符集:
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
是 选项,它们分别代表以下含义:
-d
全称:delete
(删除)。
作用:删除输入中的指定字符。
示例:
bash
echo "Hello123!" | tr -d '0-9'
输出:
Hello!
删除输入中的所有数字。
-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
-d
:delete
,删除指定字符。
-c
:complement
,对字符集取反操作。
tr -dc
组合用于删除所有不在指定字符集中的字符。