linux tr命令-轉(zhuǎn)換或刪除輸入的字符的

概述

使用tr命令可以對(duì)輸入的字符串的字符進(jìn)行替換、壓縮和刪除(使用-d選項(xiàng)),需要注意的是,每個(gè)替換行為是根據(jù)原字符串進(jìn)行的,也可以理解成是同時(shí)一一替換,而不是等待第一個(gè)字符替換完了再替換下一個(gè)。下圖說(shuō)明


image
# echo "helloc,world" | tr  'lo' 'oe'  //l替換o后,那候些替換過(guò)來(lái)的o不會(huì)替換為e
heooec,werod

命令格式

tr [-cdst][--help][--version][第一字符集][第二字符集]  
tr [OPTION]…SET1[SET2] 

參數(shù)說(shuō)明:

  • 字符集1:指定要轉(zhuǎn)換或刪除的原字符集。當(dāng)執(zhí)行轉(zhuǎn)換操作時(shí),必須使用參數(shù)“字符集2”指定轉(zhuǎn)換的目標(biāo)字符集。但執(zhí)行刪除操作時(shí),不需要參數(shù)“字符集2”;
  • 字符集2:指定要轉(zhuǎn)換成的目標(biāo)字符集。

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都屬于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

  • -c, --complement:反選設(shè)定字符。也就是符合 SET1的部份不做處理,不符合的剩余部份才進(jìn)行轉(zhuǎn)換
  • -d, --delete:刪除指令字符
  • -s, --squeeze-repeats:縮減連續(xù)重復(fù)的字符成指定的單個(gè)字符
  • -t, --truncate-set1:削減 SET1 指定范圍,使之與 SET2 設(shè)定長(zhǎng)度相等,然后SET1中的字符替換成SET2字符

實(shí)例

刪除數(shù)字

# echo "1234abcd" | tr -d [:digit:]
abcd

刪除特定字符

# echo "1234567843ab,cd" | tr -d 34
125678ab,cd

反向刪除

# echo "1234567843ab,cd" | tr -Cd 34
3443

將制表符轉(zhuǎn)換為空格

cat text | tr '\t' ' '

縮減連續(xù)重復(fù)的字符成指定的單個(gè)字符

# echo "123333a4444ab,cd" | tr -s 34 zs   //將連續(xù)的3和4分別替換成單個(gè)z好s
12zasab,cd

小寫(xiě)轉(zhuǎn)大寫(xiě)

# echo "hello,world" | tr a-z A-Z
HELLO,WORLD
# echo "hello,world" | tr [:lower:] [:upper:]
HELLO,WORLD
# echo "hello,world" | tr a-z A-Z
HELLO,WORLD
# echo "hello,world" | tr [:lower:] [:upper:]
HELLO,WORLD

刪除Windows文件“造成”的'^M'字符

cat file | tr -s "\r" "\n" > new_file
或
cat file | tr -d "\r" > new_file
# echo "helloc,world" | tr -t 'lowc' 'oe' //將lowc截?cái)喑蒷o,然后將字符串中l(wèi)替換成o,o替換成e,需要注意的是,每個(gè)替換行為是根據(jù)原字符進(jìn)行的
heooec,werod
tr --help
Usage: tr [OPTION]... SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.

  -c, -C, --complement    use the complement of SET1
  -d, --delete            delete characters in SET1, do not translate
  -s, --squeeze-repeats   replace each input sequence of a repeated character
                            that is listed in SET1 with a single occurrence
                            of that character
  -t, --truncate-set1     first truncate SET1 to length of SET2
      --help     display this help and exit
      --version  output version information and exit

SETs are specified as strings of characters.  Most represent themselves.
Interpreted sequences are:

  \NNN            character with octal value NNN (1 to 3 octal digits)
  \\              backslash
  \a              audible BEL
  \b              backspace
  \f              form feed
  \n              new line
  \r              return
  \t              horizontal tab
  \v              vertical tab
  CHAR1-CHAR2     all characters from CHAR1 to CHAR2 in ascending order
  [CHAR*]         in SET2, copies of CHAR until length of SET1
  [CHAR*REPEAT]   REPEAT copies of CHAR, REPEAT octal if starting with 0
  [:alnum:]       all letters and digits
  [:alpha:]       all letters
  [:blank:]       all horizontal whitespace
  [:cntrl:]       all control characters
  [:digit:]       all digits
  [:graph:]       all printable characters, not including space
  [:lower:]       all lower case letters
  [:print:]       all printable characters, including space
  [:punct:]       all punctuation characters
  [:space:]       all horizontal or vertical whitespace
  [:upper:]       all upper case letters
  [:xdigit:]      all hexadecimal digits
  [=CHAR=]        all characters which are equivalent to CHAR

Translation occurs if -d is not given and both SET1 and SET2 appear.
-t may be used only when translating.  SET2 is extended to length of
SET1 by repeating its last character as necessary.  Excess characters
of SET2 are ignored.  Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion.  -s uses SET1 if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'tr invocation'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容