zoukankan      html  css  js  c++  java
  • linux grep sed awk

    $ grep ‘test’ d*
    显示所有以d开头的文件中包含 test的行。
    
    $ grep ‘test’ aa bb cc
    显示在aa,bb,cc文件中匹配test的行。
    
    $ grep ‘[a-z]{5}’ aa
    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
    
    $ grep ‘w(es)t.*1′ aa
    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用””号进行转义,直接写成’w(es)t.*1′就可以了

    不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。

    $ find ~ -name "*.txt" -print
    

    想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:

    $ find . -name "*.txt" -print
    

    想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:

    $ find . -name "[A-Z]*" -print
    

    想要在/etc目录中查找文件名以host开头的文件,可以用:

    $ find /etc -name "host*" -print
    

    想要查找$HOME目录中的文件,可以用:

    $ find ~ -name "*" -print 或find . -print
    

    要想让系统高负荷运行,就从根目录开始查找所有的文件:

    $ find / -name "*" -print
    

    如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回例如名为ax37.txt的文件:

    $find . -name "[a-z][a-z][0-9][0-9].txt" -print

    find命令的例子;

    1、查找当前用户主目录下的所有文件:

    下面两种方法都可以使用

    $ find $HOME -print
    $ find ~ -print
    

    2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

    $ find . -type f -perm 644 -exec ls -l {  } ;
    

    3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

    $ find / -type f -size 0 -exec ls -l {  } ;
    

    4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

    $ find /var/logs -type f -mtime +7 -ok rm {  } ;
    

    5、为了查找系统中所有属于root组的文件;

    $find . -group root -exec ls -l {  } ;
    

    6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。

    该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令

    $ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok rm {  } ;
    

    7、为了查找当前文件系统中的所有目录并排序;

    $ find . -type d | sort

    和sed类似,pattern是正则表达式,actions是一系列操作。awk程序一行一行读出待处理文件,如果某一行与pattern匹配,或者满足condition条件,则执行相应的actions,如果一条awk命令只有actions部分,则actions作用于待处理文件的每一行。比如文件testfile的内容表示某商店的库存量:

    ProductA  30
    ProductB  76
    ProductC  55
    

    打印每一行的第二列:

    $ awk '{print $2;}' testfile
    30
    76
    55
    

    自动变量$1、$2分别表示第一列、第二列等,类似于Shell脚本的位置参数,而$0表示整个当前行。再比如,如果某种产品的库存量低于75则在行末标注需要订货:

    $ awk '$2<75 {printf "%s	%s
    ", $0, "REORDER";} $2>=75 {print $0;}' testfile
    ProductA  30    REORDER
    ProductB  76
    ProductC  55    REORDER




  • 相关阅读:
    Django中的分页操作、form校验工具
    Django之form表单操作
    手写版本orm
    mysql注入问题
    MySQL基本操作
    初识数据库
    进程池、线程池
    信号量
    event事件
    死锁
  • 原文地址:https://www.cnblogs.com/alamZ/p/7197641.html
Copyright © 2011-2022 走看看