Linux四剑客find/grep/awk/sed
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的更多相关文章
- Linux查找命令:grep,awk,sed
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- linux四剑客-grep/find/sed/awk/详解-技术流ken
四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...
- Linux基础-正则表达式整理---------------grep、sed、awk
目录: Ⅰ:正则表达式 Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...
- Linux三剑客-grep || awk || sed
grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a 将二进制文档以文本方式处理 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便 ...
- Linux 文本处理工具grep,sed,awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- Linux 命令之 linux 四剑客
Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为 命令: ...
- 【Linux】linux中文本操作利器grep,awk,sed
grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...
- 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed
grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...
- linux shell grep/awk/sed 匹配tab
处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...
随机推荐
- RSA加密原理使用方式签名验证
RSA加密原理使用方式签名验证 加密是网络传输中非常重要的一环,它保证了信息的安全性,让他人无法通过抓包来获取通讯的信息也无法通过伪造信息而实现对系统的入侵.其中最为常用的信息传递加密方式就是RS ...
- iOS工程中创建pch文件
1.新建pch类文件 2.在工程配置中,Build Setting 下搜索"pre"寻找Apple LLVM6.1 - Language下的 Preflx Header 3.点开P ...
- connot connect to mysql 10061
根据我自己运行的情况,解决方法如下: 按windows+R, 输入services.msc查找服务,在服务与应用中找到MYsql服务,查看是否已启动.
- ubuntu关闭服务需要身份验证
service tomcat stop ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === 需要通过认证才能停止“tom ...
- mysql导入慢解决方法
[mysqldump]max_allowed_packet = 512M [mysqld] interactive_timeout = 120 innodb_change_buffering=alli ...
- vue vue-route 传参 $route.params
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- js分割数字
var str = "123"; var b = String(str).split(''); 打印b[0].b[1].b[2]看效果...
- C# 使用printDocument1.Print打印时不显示 正在打印对话框
C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printControll ...
- java异常与spring事务关系的知识点查漏补缺
一.基础概念 java的异常结构图 从图中可知 Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Exception是异常,j ...
- laravel 服务提供者介绍和使用
#安装传送门 安装composer,以及通过composer安装laravel #讲解使用 服务提供者这个具体表现都是围绕着依赖注入 在根目录config/app.php的providers中的数组中 ...