回覆列表
  • 1 # 滴逃逃

    語法:tr [–c/d/s/t] [SET1] [SET2]

    SET1: 字符集1

    SET2:字符集2

    -c:complement,用SET2替換SET1中沒有包含的字元

    -s: squeeze-repeats,壓縮SET1中重複的字元

    -t: truncate-set1,將SET1用SET2轉換,一般預設為-t

    1、去除重複的字元

    #將連續的幾個相同字元壓縮為一個字元

    $ echo aaacccddd | tr -s [a-z]

    acd

    $ echo aaacccddd | tr -s [abc]

    acddd

    #注意:這些空白行上只有回車符,沒有空格符

    $ cat test.txt

    I love linux!

    Hello World!

    Shell is worthy to been studied

    #這裡用換行符的跳脫字元/n

    $ cat test.txt | tr -s [/n]

    I love linux!

    Hello World!

    Shell is worthy to been studied

    #也可以用八進位制符/012,/012與/n都是換行符

    $ cat test.txt | tr -s [/012]

    I love linux!

    Hello World!

    Shell is worthy to been studied

    3、大小寫相互轉換

    #將語句中所有的小寫字母變成大寫字母,其中-t可省略

    $ echo Hello World I Love You |tr [-t] [a-z] [A-Z]

    HELLO WORLD I LOVE YOU

    #將語句中所有的大寫字母變成小寫字母

    $ echo Hello World I Love You |tr [A-Z] [a-z]

    hello world i love you

    #也可以利用字元類進行轉換

    #[:lower:]代表小寫字母,[:upper:]代表大寫字母

    $ echo Hello World I Love You |tr [:lower:] [:upper:]

    HELLO WORLD I LOVE YOU

    $ cat test.txt

    Monday 09:00

    Tuesday 09:10

    Wednesday 10:11

    Thursday 11:30

    Friday 08:00

    Saturday 07:40

    Sunday 10:00

    $ cat test.txt | tr -d [0-9][: ]

    Monday

    Tuesday

    Wednesday

    Thursday

    Friday

    Saturday

    Sunday

    5、利用-c進行補集的替換

    #有時候在文字中我們只知道要保留的一些字元,其他字元種類繁多,就可以使用補集的替換

    $ cat test.txt

    Monday 09:00

    Tuesday 09:10

    Wednesday 10:11

    Thursday 11:30

    Friday 08:00

    Saturday 07:40

    Sunday 10:00

    #我們只需要星期,則思路就是除了字母,其他統統替換掉

    cat test.txt|tr -cs [a-z][A-Z] /n

    Monday

    Tuesday

    Wednesday

    Thursday

    Friday

    Saturday

    Sunday

    作者To_Be_Monster_Of_IT

  • 中秋節和大豐收的關聯?
  • 媒體爆料克萊·湯普森被女友勞拉甩掉,這是克萊季後賽低迷的原因嗎?