linux下查⽂件及⽂件内查内容--findgrepsedawk
1.find  查到想要的⽂件或⽬录
  格式:find  [path]  [-OPTION]  [-exec |grep  |xargs  -ok  -print  | ……]  [command  {} \;]
  参数:
    -type    以类型查
      f    ⽂件
      d  ⽬录
    -name    以⽂件名查
    -size    根据问价⼤⼩来查。eg:  find /data -size 5M
    -perm    根据⽂件权限查。  eg: find /data -perm 755
    -maxdepth n  显⽰的最⼤层数。(这个参数通常放在第⼀个,否则的话会有警告信息)。  eg: find /data/  -maxdepth 2  -type d
    -exec command {} \;    对匹配的⽂件执⾏该参数给出的命令。形式为  command {} \;
    -ok    与-exec作⽤相同。区别在于,执⾏命令之前,都会给出提⽰,让⽤户确认是否执⾏。
    -mtime -n/+n    根据修改时间出对应的⽂件。-n指n天以内;+n指n天以前。天数前⾯必须要有加号或减号,否则不会有查结果。
      eg:find  -type f -name "*.log" -mtime +7|xargs  ls -l    或  ls -l $(find -type f -name "*.log" -mtime 7)    或  find -type f -name "*.log" -mtime 7 -exec ls -l {} \;
    !  取反。注意:符号前后⾄少⼀个空格。  eg:  find /data  -maxdepth 2 -type d ! -name "."
    find不加任何参数-----显⽰当前⽬录下的所有⽂件(包括⼦⽬录及⼦⽬录内的⽂件)
  格式:grep  参数查⽤的关键字符⽂件名
  参数:
    -v    排除。  eg:grep -v  "num"      将⽂件内,⾮包含num字符的⾏显⽰出来
    -An  将匹配到的字符所在⾏显⽰出来,并显⽰次⾏下⾯的n⾏。  eg:grep A15  “num”     将⽂本内,匹配到num字符的⾏显⽰,并显⽰此⾏下⾯15⾏
    -n    显⽰匹配到的字符所在的⾏内容,及其⾏号。
    -o    显⽰grep的执⾏过程,即每次匹配到的内容。涉及到正则的话,就是正则每次匹配到的内容。 
    egrep    ⽀持⾼级正则。相当于grep -E
3.sed  取⾏。多⽤于替换。默认会显⽰⽂件的全部内容。也可⽤于查内容(这个⽤的⽐较少)
  格式:sed 参数匹配⾏/替换/查的字符⽂件名
  参数:
    -n    取消默认输出。即取消默认显⽰全部内容,⼀般与p搭配使⽤。
    -r    表⽰⽀持扩展正则。
    -i    修改⽂件内容
    eg:
   取⾏:sed -n '20,30p'      显⽰⽂件第20⾏到第30⾏的内容。
      sed -n '20p'      显⽰⽂件第20⾏的内容。
      sed -n '3,$p'   显⽰第3⾏到最后⼀⾏。
      注意:显⽰前多少⾏或后多少⾏,可以⽤head或tail命令。搭配sed显⽰具体的某⾏或区间⾏。关于⾏的显⽰查看就能完全搞定。
   替换:sed -i 's#谁#替换为什么#g'        eg:  sed  -i  's#nm#DDD#g'      将⽂件内的nm全部替换为DDD
        注:替换时sg中间的三个符号,什么都可以,但是⼀般常⽤@或#,即s@@@g或s###g
      搭配find可替换多个⽂件内容:
      find /data/ -type f  -name "*.sh" |xargs  sed -i 's#abc#kpl#g'      出/data⽂件夹内所有以.sh结尾的⽂件,替换所有⽂件内的abc 为kpl.
      sed -n '2s#abc#123#gp'     将第2⾏的abc替换为123,显⽰出来。这⾥若是加-i的话,则会⽤处理的结果⾏替换整个⽂件的内容,如:sed -n '2s#abc#123#gp'   -i  ,则会把第2⾏中的abc全部替换为123后,清空⽂件,写⼊第2⾏内容,见下图:
          ‘=’表⽰给每⾏加⾏号
      替换具体某⼀⾏内容时,不能加p参数,只要-i即可,否则会出错,会多出⼀⾏来。这⾥还需要再研究研究:
      sed  -i ‘2s#abc#123#g’    这样没有参数p,会正常的将第2⾏abc替换为123.
      sed  -i  '2s#abc#123#gp'      这样的有参数p,会在替换后多出⼀⾏来,内容和第2⾏⼀致.见图:
   查:sed  -n '/abc/p'      将⽂件内包含abc的⾏显⽰.
      sed '/abc/d'      将⽂件内没有包含abc字符的⾏,均显⽰出来(这⾥如果加-n的话就什么都不显⽰)。-----⼀般根据字符查⾏⽤grep,sed这样⽤起来不⽅便,也⽤的少.
4.awk      取列。取⾏。计算。
  格式:awk  参数取⾏/取列/查的字符⽂件名
  awk  ‘谁{做什么}’  ⽂件  eg:awk  ‘NR==2{print $3}’    取出⽂件第2⾏的第3列内容
  参数:
    -F    指定分隔符(未指定时,默认空格作为分隔符)。 eg:awk  -F ”,“  ‘{print $3}’    ⽤逗号作为分隔符,显⽰第3列
    -F "[ ,]"    指定多个分隔符。  eg:awk  -F "[ ,]"  '{print $3,$5}'      ⽤逗号或者空格作为分隔符,显⽰第3列和第5列
linux查看当前文件夹内容
    -F "[ ,]+"  指定多个分隔符。这⾥的+号表⽰,以连续出现的空格或逗号作为分隔符。
    $n  第n列
    $0  表⽰⼀整⾏的内容
    NR  表⽰⾏号
    {print }
  取列:
    awk ‘{print $3]’   显⽰第3列
    awk '{print $2,$6}'     显⽰第2列,第6列
    awk '{print $2"  ,aa"$4}'      显⽰第2列,第4列。⼤括号内,双引号⾥的内容会原封不动的输出。
  取⾏:
    awk ‘NR==20,NR==30’    显⽰第20⾏到第30⾏
    awk ‘NR==20’    显⽰第20⾏
  查:
    awk '/123/'    显⽰⽂件内包含123字符的⾏
    awk  ‘!/123/’      显⽰⽂件内不包含123字符的⾏

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。