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 " "
- 去除多餘的空格
- 字符替換