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

这里的技术是共享的

You are here

macos tr 命令详解 文心一言 chatgpt 有大用 有大大用

在macOS中,tr命令是一个非常实用的文本处理工具,它主要用于从标准输入中通过替换、删除或压缩操作进行字符转换。tr命令的语法相对简单,但功能强大,可以处理各种文本转换任务。以下是对tr命令的详细解析:

基本语法

bash复制代码

tr [OPTION]... SET1 [SET2]
  • OPTION:表示选项,用于指定tr命令的行为。

  • SET1:表示原字符集,即需要被转换或删除的字符集合。

  • SET2:表示目标字符集,即转换后的字符集合。当进行删除操作时,不需要指定SET2

常用选项

  • -c--complement:反选设定字符。即符合SET1的部分不做处理,不符合的剩余部分才进行转换。

  • -d--delete:删除指令字符。即删除所有属于SET1的字符。

  • -s--squeeze-repeats:缩减连续重复的字符成指定的单个字符。即将多个连续的相同字符压缩为一个。

  • -t--truncate-set1:削减SET1指定范围,使之与SET2设定长度相等。但此选项在tr命令的常规使用中并不常见。

字符集

tr命令中,字符集可以是单个字符、字符范围(如[a-z]表示小写字母)、字符类(如[:alnum:]表示字母和数字)等。字符类提供了一种方便的方式来指定一组具有共同属性的字符。

示例

  1. 将文本中的小写字母转换为大写字母

    bash复制代码

    echo "hello" | tr '[:lower:]' '[:upper:]'

    输出:HELLO

  2. 删除文本中的数字

    bash复制代码

    echo "abc123def456" | tr -d '[:digit:]'

    输出:abcdef

  3. 将文本中的空格替换为Tab键

    bash复制代码

    echo "hello world" | tr ' ' '\t'

    输出:hello world(注意,这里\t表示Tab键,实际输出中会看到文本之间的Tab分隔)

  4. 删除文件中的空行

    bash复制代码

    tr -s '\n' < input.txt > output.txt

    这个命令会将input.txt中的多个连续换行符压缩为一个,从而删除空行。注意,这里的-s选项是压缩重复字符,而不是直接删除空行;但在处理换行符时,它可以达到删除空行的效果。

  5. 使用字符类删除和保留字符

  • 删除文本中的数字和特殊字符:

    bash复制代码

    echo "abc123!@#$" | tr -d '[:digit:][:punct:]'

    输出:abc

  • 保留文本中的数字和字母:

    bash复制代码

    echo "abc123!@#$" | tr -cd '[:alnum:]'

    输出:abc123

注意事项

  • tr命令默认从标准输入读取数据,并将结果输出到标准输出。如果需要处理文件,可以使用重定向(如<>)或管道(|)将文件内容传递给tr命令。

  • tr命令不支持正则表达式,因此其字符匹配能力相对有限。对于更复杂的文本处理任务,可能需要使用sedawk等更强大的工具。

  • 在使用tr命令时,需要注意字符集和字符类的正确表示方法,以避免出现意外的结果。


普通分类: