当前位置:首页 > 开发 > 系统架构 > shell > 正文

linux,shell学习(五)

发表于: 2014-06-12   作者:雨一直下   来源:转载   浏览次数:
摘要: 文本过滤 1.正则表达式介绍  4.awk介绍 2.find介绍            5.sed介绍 3.grep介绍          6.合并与分割(sort,uniq,j
文本过滤

1.正则表达式介绍  4.awk介绍
2.find介绍            5.sed介绍
3.grep介绍          6.合并与分割(sort,uniq,join,cut,paste,split)

    1.正则表达式:
        1.1 什么是正则表达式
            一种用来描述文本模式的特殊字符
        1.2 由普通字符(例如:字符 a 到 z )以及特殊字符(称 元字符,如:/,*,?等)组成
        1.3 文本过滤工具在某种模式下都支持正则表达式
        1.4 正则表达式语法: http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx
    2.find命令
        2.1 一个查找命令
        2.2 查找具有某些特征的文件命令
        2.3 可遍历当前目录甚至整个文件系统来查找某些文件或目录
        2.4 遍历大的文件系统时,一般放在后台执行
        2.5 find命令的格式:
            find pathname -options [-print -exec -ok]
            -pathname find命令查找的路径,例如:用.来表示当前路径,用/表示根目录
            -print find命令将匹配文件输出到标准输出
           -exec find命令,将匹配的文件执行该参数给出的shell命令,相应命令的形式:'command' {  } \; 注意{}和\;之间的空格。
           -ok和-exec命令作用相同。只不过以一种安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前都会给出提示,让用户选择是否执行。
       2.6find命令选项
            -name   按照文件名查找文件。
            -perm   按照文件权限来查找文件。
            -prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
            -user   按照文件属主来查找文件。
            -group  按照文件所属的组来查找文件。
            -mtime -n +n   按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
            -nogroup   查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
            -nouser    查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
            -newer file1 ! file2   查找更改时间比文件file1新但比文件file2旧的文件。
            -type   查找某一类型的文件,诸如:
                b - 块设备文件。
                d - 目录。
                c - 字符设备文件。
                p - 管道文件。
                l - 符号链接文件。
                f - 普通文件。
            -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
            -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
            -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
            -mount:在查找文件时不跨越文件系统mount点。
            -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
            -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
    -amin n   查找系统中最后N分钟访问的文件
  -atime n   查找系统中最后n*24小时访问的文件
  -cmin n   查找系统中最后N分钟被改变文件状态的文件
  -ctime n  查找系统中最后n*24小时被改变文件状态的文件
    -mmin n  查找系统中最后N分钟被改变文件数据的文件
  -mtime n  查找系统中最后n*24小时被改变文件数据的文件
xargs
   xargs - build and execute command lines from standard input
   在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
   find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
   在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
   而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
   下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件:
[hadoop@localhost shellTest]$ find . -name "*.txt" | xargs ls -l
-rw-rw-r--. 1 hadoop hadoop 49 5月  26 05:44 ./aa.txt
-rw-rw-r--. 1 hadoop hadoop 49 5月  26 05:44 ./bb.txt
-rw-rw-r--. 1 hadoop hadoop 15 5月  26 05:46 ./cc.txt
-rw-rw-r--. 1 hadoop hadoop  9 5月  26 06:05 ./dd.txt
-rw-rw-r--. 1 hadoop hadoop 11 5月  26 06:09 ./ee.txt
-rw-rw-r--. 1 hadoop hadoop 51 5月  26 06:11 ./error.txt
-rw-rw-r--. 1 hadoop hadoop  0 5月  26 05:47 ./nullfile.txt
-rw-rw-r--. 1 hadoop hadoop 14 5月  30 17:41 ./ss/1.txt

   2.grep命令
   grep的三种形式:
   grep:标准grep命令,本章大部分篇幅集中讨论此格式。
   egrep:扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。
   fgrep:快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。
   grep命令格式:
        - grep(参数)选项。
        - 匹配grep的一般模式。
        - 只匹配字母或数字,或两者混用。
        - 匹配字符串范围。
   grep选项
   常用的grep选项有:
        -c 只输出匹配行的计数。
        -i 不区分大小写(只适用于单字符)。
        -h 查询多文件时不显示文件名。
        -l 查询多文件时只输出包含匹配字符的文件名。
        -n 显示匹配行及行号。
        -s 不显示不存在或无匹配文本的错误信息。
        -v 显示不包含匹配文本的所有行。
     grep "模式匹配"  文件
    AWK命令介绍
        可以从文件或字符串中基于指定规则浏览和抽取信息
        是一种自解释的编程语言
        三种命令调用awk语言
        1.命令行方式
            awk [-F field-spearator] 'command' input-files
        2.脚本
            所有awk命令插入到一个文件中,并使awk程序可执行。然后用awk脚本解释器作为脚本的首行,以便键入脚本的名称来调用它。
        3.awk命令插入一个单独的文件
            awk -f awk-script-spearator input-files
    awk脚本由各种操作和模式组成。
        模式和动作
            模式部分决定动作语句何时触发及触发事件.(BEGIN,END)
            动作对数据进行处理,放在大括号{}内指明.(print)
        分隔符,域和记录
            awk执行时,其浏览域标记为$1,$2...$n.这种方法称为域标识。$0为所有域。
        注意:执行时不要混淆符号$和shell中的$.他们是不同的。

      sed,sort,uniq,join,cut,paste,split  搜索学习

linux,shell学习(五)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
很早就想根据自己的学习规律和遗忘规律,自己总结一下Linux/Unix系统的Shell命令,一来便于自己时常
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号