grep sed awk 3个Linux中对文件内容操作的命令
在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章。
1、grep命令
主要作用:用于搜索文件中特定字符串,并输出整行内行
命令格式:grep [选项参数] "搜索内容" 文件(选项参数-r时为目录)
选项参数:-v 反选;-i忽略大小写;-r 递归;-n显示匹配位于第几行及内容;-c统计有多少行被匹配;-A之前多少行内容;-B之后多少行内容;-C前后多少行内容
例子:grep -n "hello" test.txt 搜索test文件中某行是否包含hello,输出在文件中该行数和行内容
2、sed命令
主要作用:主要作用于一整行内容。可以作用于特定的行数据,也可以作用于搜索出的字符串所在的行。确定所搜索的特定字符串或行内容,可以进行输出、删除、写入文件、替换操作。
命令格式:sed [选项参数] '搜索内容和搜索命令(按照一定的格式)' 文件
选项参数:-n 不需要打印多余的输出 -e 多条命令 -i 直接改变文件中的内容
搜索内容:可以包含正则匹配
搜索命令:d 删除;p 打印;w写入特定文件;s/// 正则匹配特定字符串替换删除;y/// 搜索特定字符串替换删除;&增加内容;() 匹配后为组,可在之后使用;,之间内容
例子:sed -n '/hello/p' test.txt 搜索包含hello的行,输出
sed 's/hello/hi/' test.txt 搜索hello字符串替换为hi
sed '/^[hH]ello/s/world/planet/' test.txt 搜索行首为hello或Hello的行,将行内world字符替换为planet
sed 's/\(hello\)\(.*\)/\2 \1/' test.txt 搜索hello字符串以空格包装,其余的字符以另一个空格包装,将其所有匹配到的替换为以空格包装的重排列的字符串顺序
3、awk命令
主要作用:可以用于搜索文件中特定字符串,输出整行内容;可以按照给定的分隔符,分隔一行内容,进行一系列操作,操作代码类似C语言代码。
命令格式:awk [选项参数] '命令 BEGIN{代码} {代码} END{代码}' 文件
选项参数:-F 分隔符;-v变量 设置变量
命令:运算符(> < + - ! in $(字段引用) ~(匹配正则))
代码包含:print;数组;if;while;for;
例子:
awk -F: '$1=="hello" {print $0}' test.txt 以:为分隔符,找到第一段字符为hello字符的行 输出该行
awk '$1~/^[hH]/ {print $0}' test.txt 默认以空格为分隔符,找到第一段字符以H或h为头字符的行 输出该行
awk 'BEGIN{print ("company", "salarysum")} {a[$1]+=$3} END{for (i in a) print (i, a[i])}' salary.txt
第一行输出company salarysum,下面将第一字段(即分公司号)作为数组的key,将第三字段(即工资)作为数组的value相加,最后遍历数组输出所有的分公司号和工资总和
4、实际例子实操
4.1 linux中访问日志如下:
10/Jan/2019:09:10:12
10/Jan/2019:09:13:39
10/Jan/2019:09:15:41
10/Jan/2019:09:40:45
10/Jan/2019:10:22:32
10/Jan/2019:11:24:22
10/Jan/2019:11:24:49
10/Jan/2019:16:55:23
统计每5分钟的主机访问数量
4.2 访问日志ip如下:
192.168.0.1 success
192.168.0.2 success
192.168.0.3 success
192.168.0.2 failed
192.168.0.1 success
192.168.0.1 failed
192.168.0.4 success
统计有多少单独个ip访问、找到访问最频繁的2个ip、访问2次以上的ip
4.1 awk -F: '{a[$2":"$3-$3%5]+=1}END{for (i in a) print(i, a[i])}' log | sort
4.2 awk '{print $1}' log | sort -n | uniq | wc -l
awk '{print $1}' log | sort -n | uniq -c | sort -nr | head -n 2
awk '{print $1}' log | sort -n | uniq -c | awk '$1>=2 {print $0}'
写博客的目的首先为的自己有所长进,如果能帮到您,我非常高兴的。
勤加思考,行动起来,祝我们喜欢自己。
grep sed awk 3个Linux中对文件内容操作的命令的更多相关文章
- 大数据之路week07--day04 (Linux 中查看文件内容的关键字处)
Linux如何对文件内容中的关键字进行查找 如果是用vi打开文件后,在命令行下输入“/关键字” 如果是在没有打开文件的前提就用"cat 文件名 | grep "关键字" ...
- linux中普通的文件查看操作(cat、more、less、head、tail)
cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...
- Linux中可用于管道操作的命令总结
在Linux中药进行稍复杂的操作,通常需要借助管道命令"|"多个命令的组合,形式如下: command 1 | command 2 | command 3 -- 在linux中 ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- Linux中一个文件10行内容,如何输出5-8内容到屏幕
题目是这样的,Linux中一个文件10行内容,如何输出5-8内容到屏幕首先我们模拟一下这样的环境: [root@localhost question]# pwd /root/question [roo ...
- linux中删除文件内空白行的几种方法。
linux中删除文件内空白行的几种方法 有时你可能需要在 Linux 中删除某个文件中的空行.如果是的,你可以使用下面方法中的其中一个.有很多方法可以做到,但我在这里只是列举一些简单的方法. 你可能已 ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- Linux中检索文件
1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...
随机推荐
- Shell企业案例实战和企业面试题
shell企业面试题 1.批量创建带有随机小写字符文件程序 使用for循环在/pizza目录下创建10个html文件,其中每个文件包含10个随机小写字母加固定字母_pizza 1.思路分析: 核心是: ...
- 元素定位之Ui-Automator-Viewer的使用
下载uiautomatorviewer升级版 1. 将所有jar包拷贝到%SDK%/tools\lib目录下,覆盖原来的uiautomatorviewer.jar2. 使用%SDK%/tools\ui ...
- openstack 2019/4/28
官网参考地址:https://docs.openstack.org/keystone/queens/install/index-rdo.html (但愿能看懂) 环境:这个部分解释如何按示例架构配置控 ...
- FineUICore(基础版)v5.4.0已发布!
FineUICore(基础版)已发布,请先加入知识星球,下载后可以永久免费商用:
- 教你如何在Drcom下使用路由器上校园网(以广东工业大学、极路由1S HC5661A为例)
免责声明: 在根据本教程进行实际操作时,如因您操作失误导致出现的一切意外,包括但不限于路由器变砖.故障.数据丢失等情况,概不负责: 该技术仅供学习交流,请勿将此技术应用于任何商业行为,所产生的法律责任 ...
- Python两个栈实现一个队列
牛客网原题: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 实现这个算法的方式有很多种,这里就写一种比较简单易懂的:虽然可能算法和效率上不太出色,当大多数人 ...
- jexus上部署nuget私服vs访问403错误解决方式
因为vs去访问nuget项目的时候是以下面的方式去访问的 http://域名/nuget/Search()?$filter=IsLatestVersion&searchTerm=''& ...
- 利用layui前端框架实现对不同文件夹的多文件上传
利用layui前端框架实现对不同文件夹的多文件上传 问题场景: 普通的input标签实现多文件上传时,只能对同一个文件夹下的多个文件进行上传,如果要同时上传两个或多个文件夹下的文件,是无法实现的.这篇 ...
- ueditor 回显html样式会直接出来,无效
百度了好久,后面发现可以直接这样
- [ffmpeg] 解码API
版本迭代 ffmpeg解码API经过了好几个版本的迭代,上一个版本的API是 解码视频:avcodec_decode_video2 解码音频:avcodec_decode_audio4 我们现在能看到 ...