Linux 练习 - 文本处理三剑客之AWK

1、文件 ip_list.txt 如下格式,请提取 ”.solin.com” 前面的主机名部分并写入到回到该文件中

1 blog.solin.com

2 www.solin.com

999 study.solin.com

[root@centos7 ~]# awk -F "[ .]" '{print $2}' ip_list.txt >> ip_list.txt
2、统计 /etc/fstab 文件中每个文件系统类型出现的次数
[root@centos7 ~]# awk '/^UUID/{fs[$3]++}END{for(i in fs){print i,fs[i]}}' /etc/fstab
swap 1
xfs 2
3、统计 /etc/fstab 文件中每个单词出现的次数
[root@centos7 ~]# awk -F "[)( /=',-]" '{for(i=1;i<=NF;i++){if($i ~ "\\<[[:alpha:]]+\\>"){word[$i]++}}}END{for(i in word){print word[i],i}}' /etc/fstab  | sort -nr[root@centos7 ~]# awk -F "[)( /=',-]" '{for(i=1;i<=NF;i++){if($i ~ "\\y[[:alpha:]]+\\y"){word[$i]++}}}END{for(i in word){print word[i],i}}' /etc/fstab  | sort -nr
4、提取出字符串 Yd$C@M05MB%9&Bdh7dq+YVixp3vpw 中的所有数字
[root@centos7 ~]# echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk '{gsub(/[^0-9]/,"",$0);print $0}'
05973
5、有一文件记录了 1-100000 之间随机的整数共 5000 个,存储的格式 100,50,35,89… 请取出其中最大和最小的整数
[root@centos7 ~]# for(( i=1;i<=5000;i++ ));do echo $[$RANDOM*RANDOM%100000] ;done > numbers.txt
[root@centos7 ~]# awk -F, '{max=$1;min=$1;for(i=1;i<NF;i++){if($i>max){max=$i}else{if($i<min){min=$i}}}}END{print "最大值:"max,"最小值:"min}' numbers.txt 
最大值:99966 最小值:16
6、解决 DOS 攻击生产案例:根据 web 日志或者或者网络连接数,监控当某个 IP 并发连接数或者短时内 PV 达到 100,即调用防火墙命令封掉对应的 IP,监控频率每隔 5 分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
  • 脚本
#!/bin/bash
ss -nt | awk -F " +|:" '{ip[$4]++}END{for(i in ip){if(ip[i]>100){system("iptables -A INPUT -s "i" -j REJECT")}}}'
  • 任务计划
# 授权
[root@centos7 ~]#  chmod+x /root/dos.sh

# 设置
[root@centos7 ~]# crontab
*/5 * * * * /bin/bash /root/dos.sh

# 查看
[root@centos7 ~]# crontab -l
*/10 * * * * /bin/bash /root/dos.sh
7、将以下文件内容中FQDN取出并根据其进行计数从高到低排序

http://mail.solin.com/index.html

http://www.solin.com/test.html

http://study.solin.com/index.html

http://blog.solin.com/index.html

http://www.solin.com/images/logo.jpg

http://blog.solin.com/20080102.html

[root@centos7 ~]# cat fqdn.txt 
http://mail.solin.com/index.html
http://www.solin.com/test.html
http://study.solin.com/index.html
http://blog.solin.com/index.html
http://www.solin.com/images/logo.jpg
http://blog.solin.com/20080102.html
[root@centos7 ~]# awk -F"[/.]" '{fqdn[$3]++}END{for(i in fqdn){print fqdn[i],i}}' fqdn.txt | sort -rn
2 www
2 blog
1 study
1 mail
8、将以下文本以 inode 为标记,对 inode 相同的 counts 进行累加,并且统计出同一 inode 中,beginnumber 的最小值和 endnumber 的最大值

inode|beginnumber|endnumber|counts|

106|3363120000|3363129999|10000|

106|3368560000|3368579999|20000|

310|3337000000|3337000100|101|

310|3342950000|3342959999|10000|

310|3362120960|3362120961|2|

311|3313460102|3313469999|9898|

311|3313470000|3313499999|30000|

311|3362120962|3362120963|2|

输出的结果格式为:

310|3337000000|3362120961|10103|

311|3313460102|3362120963|39900|

106|3363120000|3368579999|30000|

[root@centos7 ~]# cat inode.txt
inode|beginnumber|endnumber|counts|
106|3363120000|3363129999|10000|
106|3368560000|3368579999|20000|
310|3337000000|3337000100|101|
310|3342950000|3342959999|10000|
310|3362120960|3362120961|2|
311|3313460102|3313469999|9898|
311|3313470000|3313499999|30000|
311|3362120962|3362120963|2|
[root@centos7 ~]# awk -F"|" -v OFS="|" 'NR!=1{count[$1]+=$4; \
> if(min[$1]>$2 || !min[$1]){min[$1]=$2};if(max[$1]<$3 || !max[$1]){max[$1]=$3}} \
> END{for(i in count){print i,min[i],max[i],count[i]"|"}}' inode.txt
310|3337000000|3362120961|10103|
311|3313460102|3362120963|39900|
106|3363120000|3368579999|30000|

热门文章

暂无图片
编程学习 ·

Vue&Element

Vue&Element Vue 快速入门 Vue 介绍Vue 是一套构建用户界面的渐进式前端框架。 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合。 通过尽可能简单的 API 来实现响应数据的绑定和组合的视图组件。 特点 易用:在有 HTML CSS JavaScript 的基础上,快…
暂无图片
编程学习 ·

小白爬虫--Xpath定位信息--举一反三

断断续续学了好多次爬虫,始终没抓到重点,最近两天终于摸到点门路,发现定位信息是最重要的,定位好了,再借助解析库就可以提取想要的信息了。 基本套路如下:(爬虫三部曲) 第一,抓取网页源代码 url = “你爬取信息的网址” headers = 请求头 import requests r0 = reques…
暂无图片
编程学习 ·

操作系统虚拟页的页表表项

为了能够实现页面置换算法中的请求调页,需要在页表的下面增加一些位,来辅助完成这样的工作。 每一页上的表项里面有4个位是比较重要: 逻辑页号------------访问位--------修改位--------保护位----------驻留位----------物理页帧号 驻留位 表示该页是在内存中还是在外存。如…
暂无图片
编程学习 ·

一文详解 Ansible 的自动化运维

一、Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。 Ansible 通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白…
暂无图片
编程学习 ·

js队列实现优先级插入的方法

队列是先进先出.在医院中排队的时候就是一个队列,最先排队的人,会先获得医生的治疗,这就是先进先出的队列但是也有例外,当医院来了一位急救病人的时候,这个队列就需要做一些改进,改为最小优先队列,这样可以让急救病人首先获得医生的救治,从而保住性命.现在用js来实现一个优先队…
暂无图片
编程学习 ·

MongoDB安装及服务配置

MongoDB安装官网下载:https://www.mongodb.com/download-center/community----介绍https://www.cnblogs.com/dreamsqin/p/10885038.html 安装到D盘MongoDB目录下,将D:\MongoDB\bin配置到环境变量path下 在MongoDB下创建data、log文件夹 测试MongDB是否安装成功 – 打开cmd命令…
暂无图片
编程学习 ·

直播带货系统开发机遇与挑战并存

如今,直播带货正逐渐取代以往传统的营销方式,各大电商也因此纷纷踏入直播带货系统开发热门,开发出多个功能为一体的直播带货系统。2020年,面临着直播带货的空前盛况,不仅是直播带货系统开发的机遇,同时也是一个挑战。所谓的直播带货,顾名思义,就是商家以及直播通过直播…
暂无图片
编程学习 ·

父子组件传值

父子组件传值 子组件要给父组件传值方法,使用$emit 子页面 <template> <div class="testCom"><input type="text" v-model="message" /><button @click="click">发送消息给爸爸</button></div> …
暂无图片
编程学习 ·

qt工程封装为dll库并调用

#.pro文件中加入如下语句,并注释掉原本相关原句在.h文件中的修改,将 xxx_global.h 文件中的内容拷贝到.h文件中,我们是直接修改pro文件的,所以这部分需要自己写入(没得给您复制噢)。形式如下,需要修改QDBLSIDERSHARED_EXPORT,将其修改为 xxx(工程名大写)SHARED_E…
暂无图片
编程学习 ·

解决Docker无法停止的方法

导读在本篇文章里小编给大家整理了关于docker容器无法stop的解决办法,有需要的朋友们可以参考下。解决方法如下:1、强制删除容器docker rm -f jenkins2、清理此容器的网络占用docker network disconnect --force bridge jenkins docker 无法stop,kill容器最近在遇到docker无…
暂无图片
编程学习 ·

理论:深度介绍OSPF路由协议

目录前言1 OSPF路由协议概述1.1 内部网关协议和外部网关协议1.2 OSPF协议1.3 链路状态协议工作原理简介1.4 OSPF的工作过程2 OSPF的基本概念2.1 OSPF区域2.2 区域ID2.3 骨干区域Area 02.4 非骨干区域2.5 Router ID2.6 Router ID选取规则2.7 DR和BDR3 Router-id及DR选举原则4 OS…
暂无图片
编程学习 ·

Codeforces 1342 E Placing Rooks —— 第二类斯特林数

This way 题意: 现在有一个n*n的棋盘,n个棋子,你要放置这些棋子使得他们满足以下条件: 每个格子都能被某个棋子打到 共有k对棋子能够打到对方 如果一个格子所处的这一行或这一列有一个棋子,那么这个格子就能被打到。两个棋子处在同一行或同一列并且它们之间没有别的棋子,…
暂无图片
编程学习 ·

神经网络架构搜索——可微分搜索 (Noisy-DARTS)

神经网络架构搜索——可微分搜索 (Noisy-DARTS)动机FairDARTS: Sigmoid函数替换Softmax函数NoisyDARTS:skip-connection注入噪声方法实现如何加噪声?加入怎样的噪声?实验结果架构参数可视化CIFAR-10实验结果ImageNet实验结果消融实验有噪声 vs. 无噪声无偏噪声 vs. 有偏噪…
暂无图片
编程学习 ·

Redis持久化

Redis的持久化1. RDB持久化2. AOF持久化 ​ Redis是内存数据库,里面存储的是自己的数据库状态,因此为了保证在意外情况下数据库状态的一致性,Redis提供了持久化功能。 1. RDB持久化 ​ 该功能就是将某个时间点上的数据库状态保存到一个RDB文件中,RDB文件是一个经过压缩的二…
暂无图片
编程学习 ·

python从入门到放弃8.1选举小程序升级版v.1

马上又要12点了–-–,唉,终于完成选举小程序升级版1了。感觉很happy,但是还是有点脑热,因为,有一些内核总是装不上。。Java还没有正式启航。 一天天的,事是真的多。如果不出意外,我应该会持续升级版本,将这个程序做得越来越完善。不多说了,还是给截图。因为自己去实践才…
暂无图片
编程学习 ·

企业实战--kubernetes(八)---存储(ConfigMap)

一、Configmap简介 Configmap用于保存配置数据,以键值对的形式存储 Configmap资源提供了向Pod诸如配置数据的方法 旨在让镜像和配置文件解偶,以便实现镜像的可移植性和可复用性 典型的使用场景: 填充环境变量的值 设置容器内的命令行参数 填充卷的配置文件创建Configmap的方…
暂无图片
编程学习 ·

*win10+anaconda+cuda+cudnn+tensorflow2.1+pycharm安装遇坑全过程

*win10+anaconda+cuda+cudnn+tensorflow2.1+pycharm 1.安装anaconda2019.3 安装过程需要选择环境变量,如下图(左图)。完成安装(learn可以不用勾选)安装完成后win+R 输入cmd后输入conda list 象征性的查看一下就好了,出现以下界面表示安装成功。2.安装cuda 10.0 安装最开…
暂无图片
编程学习 ·

分离springboot中的lib

仅供参考: 这次分离lib源于疫情期间连公司内网上传jar过于缓慢。在一个项目构建之初,所使用的依赖基本都已经确定,因此大概率不会对项目有大的影响。(非适用于所有场景) 首先我们要引入插件: <!-- 分离lib --> <plugin><groupId>org.apache.maven.plug…
暂无图片
编程学习 ·

操作系统复习概要

题型:选择题 11题*2分 基本概念以及数据结构 名词解释 5题*3分 解答题 5题*5分 问答与计算题 12 13 13 分5 6 9 11非标准试题1了解:计算机系统的状态——CPU用户态,系统态,状态、概念以及引入原因用户态:一些内存区域受到保护;特权指令不能执行 系统态:受保护的内存区域…