bash基础特性之cut tr 详解与使用

来源:互联网 发布:怎样去掉mac上win 编辑:程序博客网 时间:2024/05/20 18:47

         最近复习了一些bash 的常用命令,如 alias 、mkdir 、pwd 、 head、tail、tr、cut、sort等命令 ,觉得其中有些命令相对复杂但是比较有趣,尤其是当几个命令组合起来使用时候会实现令人惊喜的效果。下文中将对cut 、tr命令进行详细的解释和使用说明,

  一 :cut 命令

   1.1. cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,
       cut 语法为: cut 选项 参数

    主要选项:
    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d :自定义分隔符,默认为空格
    -f  :与-d一起使用,指定显示哪个区域。
   1.2. cut 应用实例 

        取出/etc/passwd 中第一个字节

       命令: cut -b 1 /etc/passwd    说明:要求取出第一个字节,需要使用-b 选项 ,参数为1

       取出etc/passwd 中所有用户名以及shell

       命令:cut -d: -f1,7 /etc/passwd

       思路说明:首先通过 cat /etc/passwd 查看,结果如图:

     

    从图中可以看出个字段用 : 隔开 ,用户名在第一列,用户所在的shell 的在第七列,我们可以使用-d:  来指定分隔符,-f 1,7 取出对应的列,执行

    cut -d: -f1,7 /etc/passwd  后得到的结果如下:

   


 二 : tr 命令

     2.1 tr 可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符。常用命令语法为

     tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file

    -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
    -d 删除字符串1中所有输入字符。
    -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
    input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。

   2.2 tr 命令使用实例

       1. 把/etc/passwd 中所有字母换为大写并追加到 PASSWORD 文件中

       命令:  tr 'a-z' 'A-Z' < /etc/passwd >PASSWORD  

       2. 替换文件f1 中 空格为 $

       命令: cat f1 | tr -s " " "$" 

       执行命令后结果如下图:  

     

三 : cut 和tr 命令结合使用举例

   查出分区空间使用率的最大百分比值 

 命令:df -h | tr -s ' ' | cut -d' ' -f5 |   tr -d % 

执行命令后得到如下结果:


思路说明:通过df -h 发现各个磁盘分区利用率之间有空格,但是空格符不是固定,需要用 tr -s " "  来删除 重复的空格符


   

得到上面结果后可以用cut 命令以空格符为分割标识,取出第五列:


最后再用tr -d % 删除 % 得到答案。