tr用法

http://yonghui702.blog.163.com/blog/static/81718342011522112633462/

文件test内容

Gaoyu,zhangyupan,wangxiuling,dingzupeng

Gaoyu,duhongxian,caowei

Gaoyu,zhangyupan,dingzupeng


要求把上面文件内容变成竖着的方式

Gaoyu

zhangyupan

wangxiuling


第一种方法

for user in $(echo `cat test |sed 's/,/ /g'`);do echo $user;done|sort|uniq


第二种方法

cat test| tr -s "," "\n"


一、tr命令介绍

  tr命令主要用来从标准输入中通过替换或删除操作进行字符转换,然后打印输出到标准输出。可以通过管道或重定向标准输入来获得 tr的输入数据。tr 对输入数据可以进行三种操作: 字符替换、压缩重复字符和删除字符。

  tr命令格式:tr [OPTION] String1 [String2]  

二、命令详细说明

   1. 在tr中string1和string2用来指示一个字符集合范围。可以是下面的一些形式(一般要加双引号): 

     1) [a-d] : [a-d]表示abcd,常用的有[a-z]、[A-Z]、[0-9]等,[bfgh]表示 bfgh。可以加上单或双引号 

     2) [C*n] : 表示字符 C 重复出现指定次数n。因此,[F*3]表示FFF。一般只能出现在 string2中。 

     3) \nnn : 三位八进制数,对应有效的 ASCII 字符。一般用于表示特定的控制字符。 

            速记符                  含义            八进制方式 

             \a              Ctrl-G   铃声            \007 

             \b              Ctrl-H    退格符         \010 

             \f              Ctrl-L   走行换页        \014 

             \n              Ctrl-J   新行            \012 

             \r              Ctrl-M   回车            \015 

             \t              Ctrl-I   tab 键          \011 

             \v              Ctrl-X                   \030 

     4) [:class_name:] : tr 支持使用内建的字符类别。常见的字符类别有: 

        [:alnum:]     字母、数字(0-9,a-z,A-Z) 

        [:alpha:]     字母(a-z,A-Z) 

        [:cntrl:]     控制字符 

        [:digital:]   数字(0-9) 

        [:graph:]     可打印的字符,不包含空格 

        [:lower:]     小写字母(a-z) 

        [:print:]     可打印的字符,包含空格 

        [:punct:]     标点符号 

        [:space:]     空格 

        [:upper:]     大写字母(A-Z) 

        [:xdigital:]  16 进制数字(0-9,a-f,A-F) 

     5) 普通字符串形式: 比如 aeiou、bdfgh 等。 

  2.选项"-c": 表示用在输入数据中出现,但是不包含在 string1 字符范围内的字符组成的集合,代替原来的 string1。在 tr 的三类操作中都可以使用选项"-c"。 

  eg: echo "adcfghg" | tr -cd fgca  // 将显示 acfgg  输入数据中不包含在 string1 中的字符范围 是"dh"  ,所以,实际上只是删除了字符"dh" 

  3.tr 用于字符替换: 只需要同时给出 string1 和 string2,可以需要不指定特别的选项。 

   1) Usage: tr string1 string2 

     输入数据中属于 string1 字符范围内的字符都将被替换,string1 中的第 n 个字符被替换为 string2 中的第 n个字符。 

    eg: echo "adcfgh" | tr adcgw vbnle  // 将显示 vbnflh (v 替换 a,b 退回 d  ,n 替换 c,l 替换 g...) 

   2) 一般 string1 和 string2 的字符个数应该相同。如果字符个数不同,分为两种情况: 

     ① string1 的字符个数少于 string2 的字符个数: string2 种额外的字符将被忽略。  

     ② string1 的字符个数多于 string2 的字符个数,又可分为两种情况: 

      ·对于 BSD 系列的系统: tr 会重复 string2 中的最后一个字符,直到补齐到 string1 一样的长度。 

      ·对于 System V 的系统 : tr 将截去 string1 中超长的部分。 

       GUN tr 使用 BSD 方式,如果想使用 System V 方式,需要指定选项"-t"。 

       eg: echo "addcfghg" | tr  adcgw vbn     // 将打印 vbbnfnhn 

           echo "addcfghg" | tr  -t adcgw vbn  // 将打印 vbbnfghg 

   3) tr 的字符替换操作主要用途有 大小写转换等。 

      eg: tr [a-z] [A-Z] < video.txt  // 将文件 video.txt 中的所有小写字母转换成大写字母 

          tr ":" "\011" < /etc/passwd  // 将 passwd 文件的域分隔符改为"\011"即"TAB" 

 4.tr 用于删除字符: 使用选项"-d"。  

  1) Usage: tr -d string1  

   输入数据中所有在 string1 中出现过的字符都将被删除。 

  2) echo "This is a note !"| tr -d [:space:] // 将打印 Thisisanote  即删除所有空格  

     tr -cd "[a-z][A-Z][\n]"  

 5.tr 用于压缩重复字符: 使用选项"-s"。压缩操作可以单独进行,也可以在替换操作或删除操作之后进行,因而分成 3 种情况: 

  1) Usage: tr -s string1 

   输入数据中连续出现的字符,只有还在 string1 中出现过的,才会将被压缩成一个字符。 

   eg: echo "aaaccdefffgghhh"| tr -s adeg  // 将打印 accdefffghhh (string1 中无字符"cfh")  

       tr -s "\n" < plane.txt  // 删除文件 plane.txt 中的空行 (即压缩回车符) 

  2) Usage: tr -s string1 string2 

    string1 和 string2 用于替换操作,string2 还用于压缩操作。 

    eg: tr -s "[\015\032]" "[\012*]"

  3) Usage: tr -ds string1 string2 

    string1 用于删除操作,string2 用于压缩操作。 

    eg: echo "aaaccdefffgghhh"| tr -ds adeg fh  // 将打印 ccfh 

       echo "aaaccdefffgghhh"| tr -d adeg      // 将打印 ccfffhhh

 6.在 tr 的替换操作中,如果 string1 使用了中括号"[ ]",那么 string2 也应该使用"[ ]"。 

 7.tr 主要用于字符转换或者抽取控制字符。tr 的大多数功能都可以用 sed 来完成,但有些人宁愿使用 tr,因为tr 更加快捷、容易。

1. Linux Tee错误日志: 在Linux中,我们可以使用Tee命令将标准输出重定向到文件并且在屏幕上显示它。这里是一个将命令的标准输出写入文件并且在屏幕上显示它的例子: ``` $ command | tee file.log ``` 如果您想要将标准错误输出重定向到文件并且在屏幕上显示它,则可以使用以下命令: ``` $ command 2>&1 | tee file.log ``` 2. Linux重定向: Linux中有三个标准流:标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。 - 标准输入(stdin):默认情况下,它从键盘读取输入。 - 标准输出(stdout):默认情况下,它将输出发送到终端窗口。 - 标准错误(stderr):默认情况下,它将输出发送到终端窗口。 在Linux中,您可以使用重定向功能来将标准流重定向到文件或其他命令。以下是一些示例: 将标准输出重定向到文件: ``` $ command > file.txt ``` 将标准错误重定向到文件: ``` $ command 2> file.txt ``` 将标准输出和标准错误重定向到同一个文件: ``` $ command &> file.txt ``` 将标准输入重定向为来自文件: ``` $ command < file.txt ``` 3. tr用法简介: tr命令用于替换或删除字符。以下是一些示例: 将所有小写字母转换为大写字母: ``` $ echo "hello" | tr '[:lower:]' '[:upper:]' HELLO ``` 删除所有数字: ``` $ echo "abc123" | tr -d '[:digit:]' abc ``` 将所有空格替换为下划线: ``` $ echo "hello world" | tr ' ' '_' hello_world ``` 4. Tee命令: Tee命令用于将标准输出重定向到文件并且在屏幕上显示它。以下是一些示例: 将命令的标准输出写入文件: ``` $ command | tee file.txt ``` 将命令的标准输出写入文件并且在屏幕上显示它: ``` $ command | tee file.txt ``` 将命令的标准错误输出重定向到文件并且在屏幕上显示它: ``` $ command 2>&1 | tee file.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值