find ./ -name "*txt" -maxdepth 1 -type f -mtime -2 -exec mv {} ./bbb.txt \;

这条命令表示找当前目录(-maxdepth 1,没这条是递归找当前目录的所有子目录)且是文件的(-type f)且两天以内创建的(-mtime -2,如果是+2表示两天前创建的,还可以-mmin以分钟为单位),且名字是匹配*txt(linux通配符和regex不同,linux自带的特殊字符

必须在""内)然后将这些文件执行mv命令,第一个参数是{}它来自前面找到的所有文件,第二个参数是要移动的目标位置(如果是目录则只是移动,如果是文件则表示同时要改名),最后的\;是find执行exec的固定格式不用管;

find是通过查找文件名来找出文件

grep 可以通过-v搜索出匹配的行的其他行,如grep -v '^$' log.log表示搜索出文件里所有的非空行;还可以多次grep来串行过滤;

grep是搜索文件内容(后面还加了xargs则会导致无法串行的grep过滤,这个时候就要用到awk作为后面grep参数的提供者;但是如果只是普通的先过滤ip,再过滤是否登录这样的场景可以连续用两个grep)

awk 也是搜索文件内容,但它可以以对列进行排除显示(grep是显示行),如awk -F ':' '{print $1}' log.log表示将文件中以:分割的字符串拆分成N列,以下标1开始,这里打印第一列;

awk可以一次性指定多个分隔符,如awf -F '[-, ]'就指定了-,和空格三个分隔符;awk会保留空列这和java的split是不一样的,java如[a如果以[为分隔符,那么只有一列,而awk则是有两列,且[a[[是会有5列;

awk也是支持正则搜索的,比如 awk -F '[-,]' '/^root/{print $0}'就用到了正则,表示搜索以root开头的行,并打印整行($0)

而且他的-F参数也支持正则如 awk -F '[/]+'表示以/或//或///。。。这些作为分隔符来分隔(对url很有效),且总以最长的为准;

awk的数组是直接 awk -F '[/]+' '{map[$2]++} END {for(key in map) print key,map[key]}' 1.txt,这个语法有点怪(END必须是大写),这个map其实更应该理解为HashMap,$2是key,而value则是相同key的行数,这里对key起到了一个distinct的作用;

sed读和sad一样,它是对输出的内容修改后显示,但是不会修改源文件,如sed 's/aaa/bbb/' log.log表示显示文件内容之前对显示的内容是aaa的修改为bbb进行显示(s是替换,p表示打印,这里不能加p否则会重复打印),这个可以用#代替/号

sed -n '...'的-n表示安静模式,需要结合p来实现只有被处理过的那行才显示,如果没有p动作那么即便某行有被处理也不会显示,如果没有-n却有p动作那么将会有重复显示,其实就可以理解为sed提供了一个简单的前置grep,不用先grep出要处理的行,然后再通过管道符sed;

sed分为参数和动作,-n是参数向s、p、a之类的是动作,而动作又分前置和后置,s是前置,因为它要求将第一个/../的参数以第二个/../的来替换,而c取代的意思是/a/c mm表示将a用mm来取代(c是把整行都替换了,而s是替换行里选择的部分);

sed如果要替换多个字符串不是在前面的参数上加上如's/[,\-]//',而是's/,//;s/-//'用分号来分隔(分号后面可以接空格,此空格只是美观作用),但是sed是支持正则表达式的,比如's/\d{5}//'表示将连续的5个数字替换为空,但是如果是一行里不连续的替换则只能用;来分别写了;

还有uniq命令如uniq -i表示对行进行忽略大小写模式的distinct操作;

sort表示对行进行字典排序,加-u也可以同时进行uniq操作,加-r可以降序,-n表示以数值序排序(10比2前,如果是字典序则2比10前)

而如果要实现以某列为排序依据可以-t ' ' -k 2表示以空格作为列依据,然后以第二列(k是key的意思)作为排序依据进行排序;

如果要将管道符前面的结果作为grep搜索的pattern则可以用 grep -oP '\[.{3}\](?=\ ip=1.1.1.1)' | xargs -r -I % /bin/grep "\[%\]" bbb.txt

一般情况下前面的搜索结果只能作为grep的要搜索的文件的参数而不能是pattern,这里通过xargs -r -I %实现了作为pattern

Linux四剑客find/grep/awk/sed的更多相关文章

  1. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  2. linux四剑客-grep/find/sed/awk/详解-技术流ken

    四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...

  3. Linux基础-正则表达式整理---------------grep、sed、awk

    目录:    Ⅰ:正则表达式    Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...

  4. Linux三剑客-grep || awk || sed

    grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a  将二进制文档以文本方式处理 -c  计算找到的符合行的次数 -i  忽略大小写 -n  顺便 ...

  5. Linux 文本处理工具grep,sed,awk

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  6. Linux 命令之 linux 四剑客

    Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为  命令: ...

  7. 【Linux】linux中文本操作利器grep,awk,sed

    grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...

  8. 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed

    grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...

  9. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

随机推荐

  1. eclipse Mars4.5.2安装fatjar

    试了在eclipse下添加plugins的方法,但是并没有生效 最后看了一篇博客@参考博客 原文转载: 首先声明,eclipse luna 和mars 楼主亲测可用. .安装Eclipse2.0版本的 ...

  2. how2j网站前端项目——天猫前端(第一次)学习笔记1

    首先是公共页面的学习,有页头.页脚和搜索框. 一.页头就是天猫网站的置顶导航栏: 看似简单,实际做起来也不容易. 写html还是比较简单的,撸起袖子就可以写完.可要想做到上图的样式就难了,难就难在CS ...

  3. position的absolute与fixed,absolute与relative共同点与不同点

    absolute与fixed 共同点: (1) 改变行内元素的呈现方式,display被置为block: (2) 让元素脱离普通流,不占据空间: (3) 默认会覆盖到非定位元素上 不同点: absol ...

  4. three.js raycaster射线碰撞的坑 (当canvas大小 不是屏幕大小是解决拾取物体的办法)

    这里只是记录一下坑,方便查阅,内容主要援引自:three.js Raycaster 射线拾取 canvas不占满整屏时射线拾取存在偏差 1. 世界坐标系: 世界坐标系位于屏幕的中心(0,0,0),往右 ...

  5. IDEA配置maven,jdk,编码

    1.电脑已解压maven,修改好settings.xml文件,本地仓库,下载远程镜像 2.

  6. python 面向对象编程 之 析构方法

    析构方法:当对象在内存中被释放的时候,自动触发执行 如果产生的对象仅仅只是用户级别的, 那么无需定义__del__,如果对象还会向操作系统发生系统调用, 即一个对象有用户级别与内核级两种资源, 比如打 ...

  7. Games.RecordMobileGamePlayVideo

    1. kamcord https://github.com/kamcord/ 2. Sound Stage & iSimulate http://blog.tacograveyard.com/ ...

  8. 20172325 2018-2019-2 《Java程序设计》第四周学习总结

    20172325 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 <Java软件结构与数据结构>第六章-列表 一.概述 1.列表是什么? 列表集合 ...

  9. VS Installer教程

    本文主要讲解利用VS2010下的Visual Studio Installer打包Zigbee程序(VS2010编写)的过程. 1.打开Zigbee程序,在解决方案中添加“新建项目”-->其他项 ...

  10. hook 9大类

    HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...