在学习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中对文件内容操作的命令的更多相关文章

  1. 大数据之路week07--day04 (Linux 中查看文件内容的关键字处)

    Linux如何对文件内容中的关键字进行查找   如果是用vi打开文件后,在命令行下输入“/关键字” 如果是在没有打开文件的前提就用"cat 文件名 | grep "关键字" ...

  2. linux中普通的文件查看操作(cat、more、less、head、tail)

    cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...

  3. Linux中可用于管道操作的命令总结

    在Linux中药进行稍复杂的操作,通常需要借助管道命令"|"多个命令的组合,形式如下: command 1 |  command 2 |  command 3 -- 在linux中 ...

  4. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  5. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  6. Linux中一个文件10行内容,如何输出5-8内容到屏幕

    题目是这样的,Linux中一个文件10行内容,如何输出5-8内容到屏幕首先我们模拟一下这样的环境: [root@localhost question]# pwd /root/question [roo ...

  7. linux中删除文件内空白行的几种方法。

    linux中删除文件内空白行的几种方法 有时你可能需要在 Linux 中删除某个文件中的空行.如果是的,你可以使用下面方法中的其中一个.有很多方法可以做到,但我在这里只是列举一些简单的方法. 你可能已 ...

  8. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  9. Linux中检索文件

    1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...

随机推荐

  1. C/C++中容器vector用法

    C++中数组非常坑,有没有相似Python中list的数据类型呢?相似的就是vector!vector 是同一种类型的对象的集合,每一个对象都有一个对应的整数索引值. 和 string 对象一样.标准 ...

  2. CentOS7.x搭建时间同步服务器

    关于chrony Chrony是一个开源的自由软件,像CentOS7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP) ...

  3. django项目外部的脚本文件执行ORM操作,无需配置路由、视图启动django服务

    #一.将脚本路径添加到python的sys系统环境变量里 import sys # sys.path.append('c:/Users/Administrator/www/mymac') #第一种.绝 ...

  4. Python类和对象

    目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...

  5. ExcelPower_Helper插件功能简述与演示

    部分功能演示简述: 1.文件目录浏览功能        此功能主要利用了ribbon的dynamicmenu控件,动态呈现自定义目录下的文件列表信息,支持点击打开,查看文件所在目录.功能来源于大神li ...

  6. 基于 docker 的redis 主从+哨兵(快速部署)

    很简单(字多的步骤见:http://www.cnblogs.com/vipzhou/p/8580495.html) 1.直接启动3个容器 docker network create --subnet ...

  7. Vue.js——vue-resource

    vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应. vue-resource使用 引入  npm install vue-reso ...

  8. 使用linux backtrace打印出错函数堆栈信息

    一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的. 在glibc ...

  9. Nginx从入门到实践(二)

    静态资源web服务 静态资源类型 CDN CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工 ...

  10. 【WC2019】数树 树形DP 多项式exp

    题目大意 有两棵 \(n\) 个点的树 \(T_1\) 和 \(T_2\). 你要给每个点一个权值吗,要求每个点的权值为 \([1,y]\) 内的整数. 对于一条同时出现在两棵树上的边,这条边的两个端 ...