锁定老帖子 主题:awk使用的简单例子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-12
2010-10-12 10:46:32,663 INFO [com.peacock.rest.service.impl.MessageRestServiceImpl] - am=getUnreadMessageCount<|>ab=100<|>af=iPhone<|>adid=13288785908f5fe3fa6f1ef4a419c0cb5e5a72cc<|>aip=58.163.175.132<|>wv=1.0<|>asid=3CBCD99761FEA49C571731727C7B9EF0<|>iua=iPhone<|>pov=3.1.2<|>abt=1<|>at=2010-10-12 10:46:32<|>ar=_<|>auid=479625<|>acode=000000<|>art=0 如何以空格分割各字段: cat log|awk '{print $数字}'分别为(默认以空格分割): 1 2010-10-12 2 10:46:32,663 3 INFO 4 [com.peacock.rest.service.impl.MessageRestServiceImpl] ... ... 如何截取以am=开头的字符串: cat log|awk '{match($0,"am=");print substr($0,RSTART)}'这里使用了match和substr两个内置函数。其中$0表示整行记录。 对以am=开头的字符串进行<|>分割: cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{print $数字}'这里使用管道再次调用了awk。 注意,因为<|>作为分隔符比较特殊,如果单纯使用<|>,awk会认为使用<或者>来分割。所以遇到|作为分隔符的话,使用[|]转义一下就可以了。 1 am=getUnreadMessageCount 2 ab=100 3 af=iPhone 4 adid=13288785908f5fe3fa6f1ef4a419c0cb5e5a72cc ... ... 输出每个函数以及执行它所花的时间(其中am=表示函数名,art=表示执行时间): cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{match($0,"art=[0-9]+");art=substr($0,RSTART,RLENGTH);printf "%s %d\n",substr($1,4),substr(art,5)}'输出: getUnreadMessageCount 0 关键地方是使用match和substr来获取art的值。 如果有多行记录,对它们进行排序: cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{match($0,"art=[0-9]+");art=substr($0,RSTART,RLENGTH);printf "%s %d\n",substr($1,4),substr(art,5)}'|sort -k1,1 -k2rn这里使用了sort命令和-k选项。首先根据函数名进行排序,然后再根据执行时间进行降序。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-20
awk是个强大的东西
|
|
返回顶楼 | |
发表时间:2010-10-20
你这awk 也刚用了个皮毛. 还有更强大的呢. 建议LZ再多看看. awk的程序还是看起来很优雅的.
|
|
返回顶楼 | |
发表时间:2010-10-21
强什么大,要不是写起来太过晦涩,主要不就是一个split吗。
|
|
返回顶楼 | |
发表时间:2010-10-21
确实很入门,如果LZ有好的awk使用经验,建议来个专栏来写
|
|
返回顶楼 | |
发表时间:2010-10-22
一.目录的权限位
1.目录的读权限位意味着可以列出其中的内容。 2.写权限位意味着可以在该目录中创建文件。 3.执行权限位则意味着搜索和访问该目录. 二.目录的权限将会覆盖该目录中文件的权限。 例如,如果目录docs具有如下的权限: drwx r-- r-- 1 louise admin 2390 Jul 23 09:44 docs 而其中的文件pay的权限为: -rwx rwx rwx 1 louise admin 5567 Oct 3 05:40 pay 那么admin组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。 |
|
返回顶楼 | |
发表时间:2010-10-22
三.suid/guid
chmod u+s <filename> suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。 例子1: 如果想要对文件login设置suid,它当前所具有的权限为rwx rw- r-- (741),需要在使用chmod命令时在该权限数字的前面加上一个4(设置guid时加一个2),即chmod 4741,这将使该文件的权限变为 rws rw- r - -。 $ chmod 4741 logit 一旦设置了这一位,一个s将出现在x的位置上。记住:在设置suid或guid的同时,相应的执行权限位必须要被设置。例如,如果希望设置guid,那么必须要让该用户组具有执行权限。如果没有赋予执行 权限而设置suid则x会变为大S,我们可以忽略它。 例子2: chmod 6711 rws --s --s 文文件被设置了suid和guid,文件属主具有读、写和执行的权限,所有其他用户具有执行的权限 四.查自己所属的用户组:使用group或者id |
|
返回顶楼 | |
发表时间:2010-10-22
五.umask值
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一 个文本文件时就赋予它执行权限,必须在创建后用umask命令增加这一权限。目录则允许设置执行权限,这样针对目录来说, umask中各个数字最大可以到7。 例子: umask值002 所对应的文件和目录创建缺省权限分别为664和775。 查看缺省权限:umask 设置缺省权限:umask 002 |
|
返回顶楼 | |
发表时间:2010-10-22
六.符号链接
UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接.它可以使得单个程序对同一文件使用不同的名字.这样的好处是文件系统只存在一个文件的副本.系统简单地通过在 |
|
返回顶楼 | |
发表时间:2010-10-22
目录中建立一个新的登记项来实现这种连接,该登记项具有一个新的文件名和要连接文件的inode号.文件的目录登记项就是所谓的文件硬链接.不论一个文件有多少硬链接,在磁盘上只有一个描述它的
inode.只要该文件的链接数不为0,该文件就保持存在. 我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名.软链接是为了克服硬 链接的不足而引入的.软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针.软件有自己的inode,并在磁盘上有一小片空间存放路径名.因此,软链接能够跨文件系统,也可以和目录链接!!!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接. |
|
返回顶楼 | |