Linux基本文本处理

本文内容涉及命令有sortuniqcutjoinheadtailgrepwcfmtfoldprtr

 

  1. sort(排序)
    • option
      • -d  使用字典顺序排序,比较中只考虑字母、数字和空格,忽略特殊字符
      • -k  指定排序关键字
      • -r  颠倒排列的顺序
      • -t  指定分隔符
      • -u  对相同的行只保留一行
      • -n  按算术值对数字字段排序
      • -f  比较前把所有小写字母改成大写
    • example
      • sort -t: -k3 -nr /etc/passwd (按用户idpasswd中的用户进行逆序排序)
    • note
      • sort命令是不稳定的排序,(稳定:两个相同的记录,经过排序后位置不变)
  2. uniq(文本去重)
    • option
      • -c  在输出行前面加上每行在输入文件中出现的次数
      • -d  仅显示重复行
      • -u  仅显示不重复的行
    • example
    • note
      • sort排序之后,使用uniq,因为uniq只会检查记录附近的值是否相同
  3. wc(统计文本行数、字数、以及字符数)
    • option
      • -c   显示字符个数
      • -w  参数显示单词的个数
      • -l    显示文本行的行数
    • example
      • 表示40行,65个单词(以空格为分隔符),1908个字符
      • -l,-w,-c 参数
      • find /etc -iname "*.conf" | wc -l     #显示/etc文件下conf文件的个数
      • grep -c "bash" /etc/passwd            #grep 中使用 -c 统计行数
      • wc /etc/*rc                                   #可以同时统计多个文件
    • note
      • 不同的locale会影响wc命令解释字节序列时的字符/单词分隔器
  4. pr(打印,将大个文件分隔为多个页面,并为每个页面加标题)
    • option
      • -h  打印页标题
      • -f   以制表符替代空格
      • -c   [column] 文本输出的列数
      • -t   不显示标题
    • example
    • note
      • pr -5 -ft test           #-5的作用与-c5作用相同,如下图,效果一样(-c5中间不能加空格,否则报错)
  5. fmt
    • option
      • -w  行宽
      • -s   只拆开字数超出字符串的列,不合并字数不足的列
      • -c   每段前两列缩排
    • example
    • note
  6. fold
    • option
      • -w  行宽,强硬截断,有可能截断单词
    • example
    • note
  7. headtail(取头、尾)
    • option
      • -Count 指定显示的行数        #-5显示5
    • example
    • note
  8. cut
    • option
      • -d  分隔符
      • -f   显示的列
    • example
    • note
  9. join(连接,使具有相同key值的记录信息连到一起)
    • option
      • -a  指定以哪个文件为主   #-a1  会以1文件为主,2中有但1 中文件没有的不显示
    • example
      • 相同字段join
      • 1文件为主或以2文件为主
    • note
  10. tr(文本替换)
    • option
      • tr str1 str2   str1所包含的每一个字符替换成str2中相同位置上的字符
      • -d               删除str1包含的每个字符
      • -s               在重复字符序列中除去第一个字符以外的所有字符
    • example
      • tr '{}' '()' < textfile > newfile
      • tr '{}' '\[]' < textfile > newfile
      • tr -d '\0' < textfile >newfile            #删除所有空字符
      • tr -s '\n' < textfile > newfile           #以单独的换行替换每一序列的一个或多个换行
    • note
  11. 其它选择
    • perl
    • sed
    • awk
    • python

欢迎访问我的个人主页: www.forgerui.tk

posted @ 2013-06-09 15:20  bairuiworld  阅读(570)  评论(1编辑  收藏  举报