linux tr命令-轉換或刪除輸入的字符的

概述

使用tr命令可以對輸入的字符串的字符進行替換白嘁、壓縮和刪除(使用-d選項)养晋,需要注意的是旭贬,每個替換行為是根據原字符串進行的,也可以理解成是同時一一替換玉雾,而不是等待第一個字符替換完了再替換下一個退客。下圖說明


image
# echo "helloc,world" | tr  'lo' 'oe'  //l替換o后遥椿,那候些替換過來的o不會替換為e
heooec,werod

命令格式

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

參數說明:

  • 字符集1:指定要轉換或刪除的原字符集瑞佩。當執(zhí)行轉換操作時楣责,必須使用參數“字符集2”指定轉換的目標字符集竣灌。但執(zhí)行刪除操作時聂沙,不需要參數“字符集2”;
  • 字符集2:指定要轉換成的目標字符集初嘹。

'A-Z' 和 'a-z'都是集合及汉,集合是可以自己制定的,例如:'ABD-}'屯烦、'bB.,'坷随、'a-de-h'、'a-c0-9'都屬于集合驻龟,集合里可以使用'\n'温眉、'\t',可以可以使用其他ASCII字符翁狐。

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

實例

刪除數字

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

刪除特定字符

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

反向刪除

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

將制表符轉換為空格

cat text | tr '\t' ' '

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

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

小寫轉大寫

# 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截斷成lo闯冷,然后將字符串中l(wèi)替換成o,o替換成e,需要注意的是隐锭,每個替換行為是根據原字符進行的
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'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末窃躲,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子钦睡,更是在濱河造成了極大的恐慌蒂窒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荞怒,死亡現場離奇詭異洒琢,居然都是意外死亡,警方通過查閱死者的電腦和手機褐桌,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門衰抑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荧嵌,你說我怎么就攤上這事呛踊。” “怎么了啦撮?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵谭网,是天一觀的道長。 經常有香客問我赃春,道長愉择,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锥涕,結果婚禮上衷戈,老公的妹妹穿的比我還像新娘。我一直安慰自己层坠,他們只是感情好殖妇,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窿春,像睡著了一般拉一。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旧乞,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天蔚润,我揣著相機與錄音,去河邊找鬼尺栖。 笑死嫡纠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的延赌。 我是一名探鬼主播除盏,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挫以!你這毒婦竟也來了者蠕?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掐松,失蹤者是張志新(化名)和其女友劉穎踱侣,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體大磺,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡抡句,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了杠愧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片待榔。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖流济,靈堂內的尸體忽然破棺而出锐锣,到底是詐尸還是另有隱情,我是刑警寧澤绳瘟,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布刺下,位于F島的核電站,受9級特大地震影響稽荧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一姨丈、第九天 我趴在偏房一處隱蔽的房頂上張望畅卓。 院中可真熱鬧,春花似錦蟋恬、人聲如沸翁潘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拜马。三九已至,卻和暖如春沐绒,著一層夾襖步出監(jiān)牢的瞬間俩莽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工乔遮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扮超,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓蹋肮,卻偏偏與公主長得像出刷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坯辩,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354