tr命令

tr命令用于从标准输出中转换、压缩和/或删除字符。
语法:

tr [OPTION]... SET1 [SET2]
-c, -C, –complement 取字符集的补集,需要配合其他选项,不能单独使用。
-d, –delete 删除SET1中的字符而不是转换
-s, –squeeze-repeats 删除所有重复出现字符序列,只保留一个;即将重复出现字符串压缩为一个字符串。
-t, –truncate-set1 将SET1对应位置的字符转换为SET2集中对应位置的字符

支持字符替换的字符集:

  \NNN            八进制值字符NNN(1到3个八进制数字)
  \\              \
  \a              铃声符
  \b              空格
  \f              换页符
  \n              换行符
  \r              回车符
  \t              水平制表符
  \v              垂直制表符
    CHAR1-CHAR2 从CHAR1到CHAR2的所有字符按照ASCII字符的顺序
    [[:digit:]] 表示任意十进制数字
    [[:xdigit:]]表示十六进制数字范围
    [[:alpha:]] 表示任意字母
    [[:alnum:]] 表示任意字母或数字
    [[:upper:]] 表示大写字母
    [[:lower:]] 表示小写字母
    [[:blank:]] 水平空白字符
    [[:space:]] 水平或垂直空白字符
    [[:punct:]] 特殊字符
  • 常用命令举例
    • 字符替换
      • 小写转换成大写:echo abcfsjdlfali | tr a-z A-Z > /tmp/file.out
      • 大写转换成小写:echo abcfsjdlfali | tr A-Z a-z > /tmp/file2.out
      • 将输入的字符串中包含set1中字符替换为set2中的字符:
        echo abcfsjdlfali | tr 'abc' '123' > /tmp/file3.out
      • 将多行合并成一行
    • 删除字符
      • 删除不满足要求的字符:
        echo abcfsjdlfali | tr -d 'abc' > /tmp/file4.out
      • dos格式文件与linux文件的转换
        tr -d '\r' < dos.txt > linux.txt
      • 将多行合并成一行
        tr -d '\n' < linux.txt > linux.txt.bak
    • 提取满足要求的字符
      • 提取所有字符:
        echo kjahdfla12039845lkasdkfiau | tr -cd [[:digit:]]
    • 字符去重
      • 去除多余的空格
        echo "aksdjf " |tr -s " "

你可能感兴趣的:(shell编程)