几个简单的文本处理工具:diff,patch,grep,cut,sort,tr

1:文本处理工具:
  1:diff and patch : diff是比较文件或者目录的不同,主要有3个用法: diff file1 file2 :比较file1和file2的不同;diff -u file1 file2 >file.path :比较他们的不同并且生成file.path的补丁文件;比较目录的不同:diff -r test1 test2 .
     patch :打补丁,这个命令一般没有,需要用yum install patch -y 来装。diff -u file1 file2 >file.path :生成的补丁file.path 这样用:把file1变的和file2一样:patch file1 file.path  . 但是如果要想把file2变的和file1一样:diff -R file2 file1 .
  2:grep :过滤,过滤的是字符,或者文件中的内容。
    grep xx file :直接寻找file中有xx的行。
    grep -i xx file :过滤的时候不考虑大小写。
    grep -n xx file :找出xx的行,并且在最前面显示行数。   grep -3 xx file :显示xx所在的行,并且显示它前后三行的内容。
    grep -r xx test :执行递归式搜索,不仅显示test中有xx的行,如果test有子目录,还会一直往下搜索。
    grep -c xx file :显示在file中xx总共有多少行,只会显示行数。
    grep -v xx file :显示除过xx行,其他的所有行。
    grep ^root file :查找file中以root开头的行。         grep root$ file :查找file中以root结尾的行。
    有时参数和命令不是单个使用的,会和 | 配合多条命令一起使用达到效果。
  3:cut :剪切文件中的文本字段,并且将其显示到标准输出,不会改变原文件的内容。
    cut -d : -f 2 file :“-d : ”表示指定分隔文件的符号为“ : ” ;“-f 2 ”表示截取以":分隔后的第二段。
    cut -d : -f 2,3 file :表示截取分隔后的2和3段。
    awk命令:对于内容为以下的文件: 1     2    3  4   如果想把2截出来,执行这个命令是不行的。  cut -d " " -f 2 file  截出的内容是空格。
            这个时候就只能用awk命令了。  awk -F " " '{print $2}' file  它可以忽略空格的个数而把2截出来。
    eg:从ifconfig中只把ip截出来:ifconfig eth0|grep "inet "|awk -F " " '{print $2}'  or  ifconfig eth0|grep inet|grep inet6 -v|awk -F " " '{print $2}'
  4:sort命令和uniq命令:(file为一个纯数字文件,对于含有汉字和数字的文件,汉字默认会被排到数字前面)
    sort : sort -n file :从小到大排列。   sort -nr file :从大到小。  sort -nru file :从大到小排列并且剔除重复的部分。
           sort -n file |uniq -u    如果file中有重复的行,会被忽略,不会显示重复的行。
           sort -n file |uniq -d    与-u相反,它会把所有的重复行显示出来。
           sort -n file |uniq -c    标准输出中会有两行,左边一行是数字个数,右边一行是不重复的数字排列。即如果有两个二 会显示 2 2 
  5:tr:转换大小写。  tr 'a-z' 'A-Z' <file   把file全部转换成大写输出。
                    tr 'a-h' 'A-H'  <file  把a-h的字母全部转换成大写输出。

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2015-08-04 23:34  杨博东的博客  阅读(224)  评论(0编辑  收藏  举报

导航