Linux shell | tr命令


shell | tr命令

聲明:該隨筆摘抄於菜鳥教程51腳本之家

用途

tr,translate的簡寫,用於字符轉換、壓縮重復字符或刪除文件中的控制字符

tr指令從標准輸入設備讀取數據,經過字符串轉譯后,將結果輸出標准輸出設備(只接受標准輸入,不接受文件參數)。

語法

tr [- cdst ][-- help ][-- version ][第一字符集][第二字符集]   
tr [ OPTION ]… SET1 [ SET2 ] 
參數說明
  • -c, --complement:反選設定字符。用於字符補集替換,用SET2替換SET1中不包含的字符
  • -d, --delete:刪除指令字符,刪除SET1指定的所有字符
  • -s, --squeeze-repeats:縮減連續重復的字符成指定的單個字符,用SET1指定的字符來替換對應的重復字符
  • -t, --truncate-set1:將SET1中字符用SET2對應位置的字符進行替換,一般缺省為-t
  • --help:顯示程序用法信息
  • --version:顯示程序本身的版本信息
字符集合的范圍
  • \NNN 八進制值的字符 NNN (1 to 3 為八進制值的字符)
  • \ 反斜杠
  • \a Ctrl-G 鈴聲
  • \b Ctrl-H 退格符
  • \f Ctrl-L 走行換頁
  • \n Ctrl-J 新行
  • \r Ctrl-M 回車
  • \t Ctrl-I tab鍵
  • \v Ctrl-X 水平制表符
  • CHAR1-CHAR2 :字符范圍從 CHAR1 到 CHAR2 的指定,范圍的指定以 ASCII 碼的次序為基礎,只能由小到大,不能由大到小。
  • [CHAR*] :這是 SET2 專用的設定,功能是重復指定的字符到與 SET1 相同長度為止
  • [CHAR*REPEAT] :這也是 SET2 專用的設定,功能是重復指定的字符到設定的 REPEAT 次數為止(REPEAT 的數字采 8 進位制計算,以 0 為開始)
  • [:alnum:] :所有字母字符與數字
  • [:alpha:] :所有字母字符
  • [:blank:] :所有水平空格
  • [:cntrl:] :所有控制字符
  • [:digit:] :所有數字
  • [:graph:] :所有可打印的字符(不包含空格符)
  • [:lower:] :所有小寫字母
  • [:print:] :所有可打印的字符(包含空格符)
  • [:punct:] :所有標點字符
  • [:space:] :所有水平與垂直空格符
  • [:upper:] :所有大寫字母
  • [:xdigit:] :所有 16 進位制的數字
  • [=CHAR=] :所有符合指定的字符(等號里的 CHAR,代表你可自訂的字符)

實例

  • -s 替換重復的字符
# 將連續重復的多個字符替換為單個字符,SET1指定了字符串要被操作的字符
echo "aaabbbaacccfddd" | tr -s [abcdf]	// 輸出 abacfd
# 刪除空白行
tr -s ["\n"]
  • -d 刪除字符
# 刪除字符串中所有字母
echo "a12HJ13fdaADff" | tr -d "[a-z][A-Z]"	//輸出 1213
# 刪除字符串中所有匹配SET1集合中的字符
echo "a1213fdasf" | tr -d [adfs]	// 輸出 1213
# 刪除文件FileName中的數字、點、空格、橫杠
cat FileName | tr -d "[0-9][.][\-][ ]"
  • -t 字符替換,一般缺省為-t,SET1和SET2中字符一一對應
# 將文件FileName中的小寫字母全部轉換成大寫字母:
cat FileName |tr a-z A-Z 
cat FileName |tr -t a-z A-Z 
cat FileName |tr [:lower:] [:upper:] 
# 將字符串中的SET1字符用SET2中字符替換
echo "a1213fdasf" | tr -t [afd] [AFO]	// 輸出 A1213FOAsF
  • -c 字符補集替換
# 文件FileName
Python          2015.9 - 2018.11
Linux           2016.4 - 2018.11
C               2013.9 - 2014.9
Golang          2018.11 -
# 刪除文件FileName中的除字母以外的字符
cat FileName | tr -cs "[a-z][A-Z]" "\n"
cat FileName | tr -c "[a-z][A-Z]" "#" | tr -s "#" | tr -t "#" "\n"
// 輸出
Python
Linux
C
Golang


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM