1.1 文本内容查看

  cat       将文件内容并输出至标准输出(屏幕)
    2.          -n       显示行号
        注意:使用cat查看文件内容时会将文件的所有内容加载至内存,
            所以应避免使用cat打开巨大文件



  tac      倒序打印文件内容至标准输出
more     全屏查看文本文件内容,只能从前往后,不能从后往前。
       文件内容显示完后自动退出

 less     全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
  head     从头部开始打印文件内容,默认打印10行
        -n       指定要打印的行数,-n可以是15也可以是-15

   tail     查看文本文件尾部内容
        -n       指定要打印的行数,可以是-n15也可以是-15
      -f         实时监测文件末尾内容

1.2 文本内容排序

1.   sort     默认升序排序,不是按数值大小排序的
    2.          -n       根据数值大小进行排序
    3.          -r       逆序排序
    4.          -t       字段分隔符
    5.          -k       以哪个字段为关键字进行排序
    6.          -u       去重,排序后相同的行只显示一次
    7.          -f       排序时忽略字符大小写

9.      uniq     将重复的行只显示一遍(连续且完全相同方为重复)
    10.         -c       显示文件中行重复的次数
    11.         -d       只显示重复的行
    12.         -u       只显示未重复的行

1.3 文本内容统计

wc(word count)查看字节
       1.   -c       显示字节数
       2.   -l       显示行数
       3.   -w       显示单词数

  大小统计
du       查看文件或目录占用的磁盘空间大小
        1.  -h        以人类友好的方式显示大小
        2.  -s       显示总的占用空间大小

df        报告文件系统磁盘空间使用情况
        1.  -h        以人类友好的方式显示大小
        2.  -i       显示inode信息

文本内容过滤

cut

cut           截取文本内容
    -d ''	  指定字段分隔符,默认是空格
    -f		  指定要显示的字段
        -f 1,3	  显示第1个字段和第3个字段
        -f 1-3	  显示第1个字段到第3个字段

awk

awk           基于列的文本报告工具
    语法:awk [选项] '匹配模式 {执行动作}'
    -F ''		  指定分隔符,可以使用正则表达式[]指定多个分隔符
    -v OFS=''	  指定打印时的分隔符

执行动作:
    '{print $#}'  		  选择打印第#列,$0代表所有列,$NF代表最后1列

匹配模式:
    '/关键字/'				  匹配关键字的行,支持正则表达式
    '/关键字1/,/关键字2/'	  匹配从关键字1到关键字2中间所有的行
    'NR==1'					  匹配第1行
    'NR>=10'				  匹配行数大于10的所有行并显示行号
    '$1==1'					  匹配第1列的值等于1的行
    '$1>=10 && $1<=20'		  匹配第1列的值大于等于10并小于等于20的行
    '$1>=10 || $3!=20'		  匹配第1列的值大于等于10或者第3列的值不等于20的行
    '$NF~"/sbin/nologin"'	  匹配最后1列字符为/sbin/nologin的行
    '$NF~!"/sbin/nologin"'	  匹配最后1列字符不为/sbin/nologin的行

    语法示例:
        awk -F ':' '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' /etc/passwd
              使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
        awk -F ':' -v OFS='-' '{print $1,$2,$3}' /etc/passwd
              使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
        awk -F '[:/]+' '{print $1,$6}' /etc/passwd
              使用:或/或:/或多个:或多个/或多个:/为分隔符分割/etc/passwd文件中的内容,打印出第1列和第6列

grep

grep          搜索文本内容,并将匹配的内容所在一整行都显示出来
              支持使用正则表达式来过滤文本
    --color       匹配到的内容高亮显示
    -i            忽略大小写
    -w            强制模式,完全匹配字词
    -n            显示匹配到的内容的行号
    -c            显示匹配到的内容一共有多少行
    -v            显示没有被模式匹配到的行
    -o            只显示被模式匹配到的字符串
    -E            使用扩展正则表达式。grep -E相当于使用egrep
    -q            静默模式,不向屏幕输出任何信息
    -A 1          被模式匹配到的内容以及其后面1行的内容都显示出来
    -B 1          被模式匹配到的内容以及其前面1行的内容都显示出来
    -C 1          被模式匹配到的内容以及其前后的行各显示1行
egrep         基于正则表达式查找文件内容
fgrep         不支持正则表达式,执行速度快

sed

sed           基于行的过滤和转换文本的流编辑器
    语法:sed [选项] [过滤条件和sed命令] [输入文件]
    -n	          取消默认sed输出,用于过滤文本内容
    -r	          使用扩展正则表达式
    -e	          一条语句执行多条sed命令
    -i	          修改文件内容

    语法示例:
        sed -n '2p' file
              打印第2行
        sed -n '2,4p' file
              打印第2行到第4行
        sed -n '/关键字/p' file
              搜索包含关键字的行,可使用基本正则表达式
        sed -n '/第一个关键字/,/第二个关键字/p' file
              搜索从第一个关键字到第二个关键字中间所有的行
        sed -i '2i test' file
              在第2行前面新增一行并写入test内容
        sed -i '/关键字/a test' file
              在匹配的关键字所在行的后面新增一行并写入test内容
        sed -i 's#原字符串#新字符串#' file
              新字符串替换原字符串,只替换每行第1个匹配到的字符
        sed -i 's#原字符串#新字符串#2' file
              替换每行第2个匹配到的字符
        sed -i 's#原字符串#新字符串#g' file
              替换每行所有匹配到的字符串
        sed -i '1s#原字符串#新字符串#g' file
              替换第1行所有匹配到的字符串
        sed -i '2c test' file
              字符串替换,将第2行内容替换为test
        sed -r 's#(.*),(.*),(.*)#\3,\2,\1#g' file
              字符串排列,重新将每行逗号隔开的列进行排序,原本的第三列变成第一列
        sed -r '1s#(.*),(.*),(.*)#\3,\2,\1#g;2s#(.*),(.*),(.*)#\3,\2,\1#g' file
              字符串排列,重新将第1行和第3行逗号隔开的内容进行排序
        sed -i '2d' file
              删除第2行
        sed -i '2d;5d' file
              删除第2行和第5行
        sed -i '2,5d' file
              删除第2行到第5行
        sed -i '1~2d' file
              删除行数为单数的行
        sed -i '2~2d' file
              删除行数为双数的行
        sed -i '1,+2d' file
              删除第1行以及后面的2行
        sed -i '/关键字/,+2d' file
              删除关键字所在的行以及后面的2行
        sed -i '1!d' file
              删除除了第1行以外的其他行
        sed -i '/第一个关键字/,/第二个关键字/d' file
              删除第一个关键字到第二个关键字中间所有的行

文件查找命令

find          实时查找,精确性强,遍历指定目录中所有文件完成查找, 
               查找速度慢,支持众多查找标准。
     语法:
     find 查找路径 [OPTION...] [查找标准] [查找到以后的处理动作]
     查找路径,默认为当前目录
     查找标准,默认为指定路径下的所有文件
     -name 'filename'      对文件名作精确匹配.支持glob通配符机制
     -iname 'filename'     文件名匹配时不区分大小写
     -regex pattern        基于正则表达式进行文件名匹配,以pattern匹配整个文件路径字符串,而不仅仅是文件名称
     -user username        根据属主来查找
     -group groupname      根据属组来查找
     -uid        	      根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
     -gid        	      根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
     -nouser     	      查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
     -nogroup    	      查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
     -type       	      根据文件类型来查找(f,d,c,b,l,p,s)
     -size       	      根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M,+表示大于,-表示小于
     -mtime      	      修改时间
     -ctime      	      改变时间
     -atime      	      访问时间
         +5      	      5天前
         -5      	      5天以内
     -mmin       	      多少分钟修改过
     -cmin       	      多少分钟改变过
     -amin       	      多少分钟访问过
         +5      	      5分钟前
         -5      	      5分钟以内
     -perm mode            根据权限精确查找
     -perm -mode           9位权限中非0的权限必须完全匹配
     -perm /mode           9位权限中非0的权限任何一位匹配即可

       组合条件:
         -a
         -o
         -not
         !                 ! 和-not含义一样

     //处理动作:默认为显示到屏幕上
         -print            显示
         -ls               类似ls -l的形式显示每一个文件的详细信息
         -fls /path/to/somefile        查找到的所有文件的长格式信息保存至指定文件中
         -delete                       删除查找到的文件
         -ok COMMAND {} \;             对查找到的每个文件执行COMMAND,每次操作都需要用户确认
         -exec COMMAND {} \;           对查找到的每个文件执行COMMAND,操作不需要确认

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数,此时命令执行可能会失败。而xargs可规避此问题。

 | xargs     通过管道将查找到的内容给xargs处理,xargs会把内容进行拆分,拆分完毕后将内容作为参数交给后面的命令执行。