Linux文本三剑客awk经典案例
前言:
AWK是一种专门用于文本处理的编程语言,它被广泛用于数据提取和报告生成,也是企业笔试面试常考的内容,以下34题是awk的用法案例,希望可以帮到你!
1.查看TCP连接状态
[root@node1 ~]# netstat -nat | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print state[key],key}'| sort -nr
7 LISTEN
1 ESTABLISHED
2.查找请求数20个IP(常用于查找攻击源)
[root@node1 ~]# netstat -nalp|awk '/^tcp/ {print $5}'|awk -F: '{print $1}'| sort | uniq -c |sort -nr | head -n 20 4 3 0.0.0.01 192.168.110.1
3.输出当前系统所有用户的UID:
[root@shell ~]# awk -F: '{print $3}' /etc/passwd
注释:-F:指定分隔符为:$3指定第三段
4.输出当前系统所有用户的UID,在首行加入UserUid:
[root@shell ~]# awk -F: 'BEGIN{print "UserUid"}{print $3}' /etc/passwd
5.输出当前系统shell为/bin/bash的用户名,在最后一行加入END That is last line!!!
[root@shell ~]# awk -F: '$NF=="/bin/bash" {print $1} END {print "That is last line!!!"}' /etc/passwd
root
kxy
fox
That is last line!!!
6.输出当前系统上GID为0的用户的用户名
[root@shell ~]# awk -F: '$4==0{print $1}' /etc/passwd
7.输出当前系统上GID大于500的用户的用户名
[root@shell ~]# awk -F: '$4>500{print $1}' /etc/passwd
8.输出当前系统上的所有用户名和UID,以“ # # ”为分隔符
[root@shell ~]# awk -F: 'BEGIN{OFS=" # # "} {print $1,$3}' /etc/passwd
[root@shell ~]# awk -F: -v OFS=" # # " '{print $1,$3}' /etc/passwd
9.输出/etc/passwd文件中以“:”为分隔符的最后一段。
[root@shell ~]# awk -F: '{print $NF}' /etc/passwd
10.对/etc/pa;sswd文件中输出的每一行计数
[root@shell ~]# awk '{print NR,$0}' /etc/passwd
11.对/etc/passwd、/etc/fstab文件中输出的每一行分别计数。
[root@shell ~]# awk '{print FNR $0}' /etc/passwd /etc/fstab
12.自定义变量
[root@shell ~]# awk -v var="Linux.com.cn" BEGIN'{print var}'=
Linux.com.cn
13.以printf格式输出用户名,UID、GID
[root@shell ~]# awk -F: '{printf "%-19s %d %10i\n",$1,$3,$4}' /etc/passwd
14.检测当前系统上所有用户,如果用户名为root输出:Admin 如果用户名不为root输出:Common User
[root@shell ~]# awk -F: '{if ($1=="root") printf "%-19s: %s\n", $1,"Admin"; else printf "%-19s: %s\n", $1, "Common User"}' /etc/passwd
15.统计当前系统上UID大于500的用户的个数
[root@shell ~]# awk -F: '{if ($3>=500) sum++} END {print sum}' /etc/passwd
16.读取/etc/passwd文件中的每一行的每一个字段,输出每个字段中字符个数大于等于四的字段。
[root@shell ~]# awk -F: '{i=1;while (i<=NF) { if (length($i)>=4) {print $i}; i++ }}' /etc/passwd
17.使用do-while语句输出/etc/passwd中每一行中的前三个字段
[root@shell ~]# awk -F: '{i=1;do {print $i;i++} while(i<=3)}' /etc/passwd
18.使用for语句输出/etc/passwd中每一行中的前三个字段
[root@shell ~]# awk -F: '{for(i=1;i<=3;i++) print $i}' /etc/passwd
19.统计/etc/passwd文件中各种shell的个数
[root@shell ~]# awk -F: '$NF!~/^$/{BASHsum[$NF]++}END{for(A in BASHsum){printf "%-15s:%i\n",A,BASHsum[A]}}' /etc/passwd
注释:$NF!~/^$/:最后一个字段非空BASHsum[$NF]++:最后一个字段相同的加一
20.显示当前系统上UID号为偶数的用户名和UID
[root@shell ~] awk -F: '{if($3%2==1) next;{printf "%-19s%d\n",$1,$3}}' /etc/passwd
21.统计当前系统上以tcp协议工作的各端口的状态数
[root@shell ~]# netstat -ant | awk '/^tcp/ {++STATE[$NF]} END {for(a in STATE) print a, STATE[a]}'
22.输出/etc/passwd中的每一行以||||隔开,默认不换行
[root@shell ~]# awk -F: 'BEGIN{ORS="||||"}{print $0}' /etc/passwd
[root@shell ~]# awk -F: -v ORS="||||" '{print $0}' /etc/passwd
23.获取根分区剩余大小
[root@shell ~]# df -h | awk '/\/$/ {print $4}'
15G
[root@shell ~]# df -h | awk '$NF=="/" {print $4}'
15G
24.获取当前机器ip地址
[root@shell ~]# ip a | awk '/ens33$/ {print $2}'
192.168.110.132/24
25.打印/etc/passwd中UID大于500的用户名和uid
[root@shell ~]# awk -F: '$3>500 {print $1,$3}' /etc/passwd
nobody 65534
systemd-coredump 999
polkitd 998
colord 997
clevis 996
26./etc/passwd 中匹配包含root或net或ucp的任意行
[root@shell ~]# awk -F: '/root|net|ucp/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
27.处理以下文件内容,将域名取出并根据域名进行计数排序处理(百度搜狐面试题) test.txt
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
[root@shell ~]# cat test.txt
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
[root@shell ~]# awk -F/ '{print $3}' test.txt | sort -nr | uniq -c3 www.baidu.com 2 post.baidu.com 1 mp3.baidu.com
[root@shell ~]# awk -F/ '{W[$3]++} END {for (k in W) print W[k],k}' test.txt | sort -nr
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
28.请打印出/etc/passwd 第一个域,并且在第一个域所有的内容前面加上“用户帐号
[root@shell ~]# awk -F: 'BEGIN{print "用户账号:"}{print $1}' /etc/passwd
29.请打印出/etc/passwd 第三个域和第四个域
[root@shell ~]# awk -F: '{printf "%-5s %d\n", $3, $4}' /etc/passwd
30.请打印第一域,并且打印头部信息为:这个是系统用户,打印尾部信息为:“================”
[root@shell ~]# awk -F: 'BEGIN {print "系统用户"} {print $1} END {print "================"}' /etc/passwd
31.请打印出第一域匹配daemon的信息.
[root@shell ~]# awk -F: '$1~/daemon/' /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32.请将/etc/passwd 中的root替换成gongda,记住是临时替换输出屏幕看到效果即可
[root@shell ~]# sed 's/root/gongda/g' /etc/passwd
[root@node1 ~]# awk '{gsub(/root/, "gongda"); print}' /etc/passwd
33.请匹配passwd最后一段域bash结尾的信息,有多少条
[root@shell ~]# awk '/bash$/' passwd | wc -l
3
[root@shell ~]# awk '{ if ($NF~/bash$/) sum++ } END {print sum}' /etc/passwd
3
34.请同时匹配passwd文件中,带mail或bash的关键字的信息
[root@shell ~]# awk '$0~/mail|bash/' passwd
root:x:0:0:root:/root:/bin/bash
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
kxy:x:1000:1000:kxy:/home/kxy:/bin/bash
fox:x:1001:1001::/home/fox:/bin/bash
fox:x:1001:1001::/home/fox:/bin/mail
相关文章:
Linux文本三剑客awk经典案例
前言: AWK是一种专门用于文本处理的编程语言,它被广泛用于数据提取和报告生成,也是企业笔试面试常考的内容,以下34题是awk的用法案例,希望可以帮到你! 1.查看TCP连接状态 [rootnode1 ~]# netstat -nat | a…...
如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图三
Mermaid 系列 如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图一如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图二 1.如何创建甘特图 Gantt 甘特图以条形图的形式用作可视化表示。它有效地展示了项目的时间表,揭示了各个项目组件完成所需的持续时间…...
考研经验总结——政治篇
文章目录 一、前言二、学习情况三、最后 一、前言 不要提前,不要提前,不要提前, 我曾在暑假的时候上了7天左右的政治课,讲真话是很有趣的,并且对于自身的世界观、人生观和价值观的改善也是相当不错的,把我…...
春招秋招,在线测评到底难不难?
现在很多企业在春招的时候,都会有一个在线测评的环节,目的当然就是希望更加了解清楚毕业生的综合能力以及其他方面的素质,好让HR可以根据岗位筛选出能力达标的人才。所以,现在不少即将面对春招的大学毕业生,比较关心的…...
数学建模比赛中,使用大语言模型如chatgpt、文心一言该如何写Prompt(提示)?
在大型语言模型中,"prompt"(中文常译为“提示”或“引导”)是指提供给模型的输入文本,用于指示或引导模型产生特定的输出。它的作用主要是告诉模型用户想要得到什么样的信息或完成什么样的任务。 例如,在使…...
tcpdump 抓包无法落盘
文章目录 问题背景解决办法 问题背景 在嵌入式设备中(Linux系统),为了分析两个网络节点的通讯问题,往往需要用到tcpdump,抓一个.pcap的包在PC端进行分析。博主在实际操作中发现,抓包无法实时落盘。 解决办法 # 下面的命令是写在…...
【网站项目】066农家乐信息平台
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...
idea/webstorm 创建Vue实例 Unresolved type Vue 处理方法
1.电脑本地安装node.js 官网下载 2. 其他: 未排除变量,前期试错(以下步骤配置了,但不确定对解决问题是否有帮助)...
C++ 11新特性之语法甜点2
概述 C 11中引入了许多简化编程工作的语法上的新特性,我们暂且美其名曰:“语法甜点”。书接上篇,我们继续介绍C 11中的这些“语法甜点”,也是第二篇关于“语法甜点”的文章。 语法甜点6:模板右边双括号 在C 03中&#…...
【芯片设计- RTL 数字逻辑设计入门 番外篇 8.1 -- memory repair 详细介绍】
文章目录 memory repair 详细介绍Memory Repair 方法Memory Repair 过程举例memory repair 详细介绍 SoC (System on Chip) 的 Memory Repair 是一种技术,用于检测和修复内存中的损坏单元。由于SoC内部集成了大量的逻辑和存储单元,包括RAM(随机访问存储器)、ROM(只读存储…...
2023强网杯复现
强网先锋 SpeedUp 要求2的27次方的阶乘的逐位之和 在A244060 - OEIS 然后我们将4495662081进行sha256加密 就得到了flag flag{bbdee5c548fddfc76617c562952a3a3b03d423985c095521a8661d248fad3797} MISC easyfuzz 通过尝试输入字符串判断该程序对输入字符的验证规则为9…...
IP代理协议有哪些?爬虫代理如何被合理使用?
随着互联网的普及和发展,IP代理作为一种网络代理方式,越来越受到人们的关注。IP代理协议是网络代理的一种规范,它规定了代理服务器与客户端之间进行通信的规则。了解IP代理协议对于使用代理的人来说非常重要,因为它可以帮助我们更…...
Vue学习笔记(二)快速入门
Vue学习笔记(二)快速入门 vue小试牛刀 hello-vue3.html <body><div id"app"><h1>{{msg}}</h1></div><script type"module">import {createApp} from https://unpkg.com/vue3/dist/vue.esm-b…...
在Vue中@click方法不起效
问题描述: 在跟项目的时候,我们可能会遇到我们click点击时,需要执行多个操作,如:调用方法,修改变量等。举个例子,像这样,我们在管理项目中想要编辑某一值,编辑好后&…...
服装行业ERP系统解决方案
我国的服装企业大多属于劳动密集型,主要有三种类型:自有品牌服装生产销售企业、接订单生产型企业及处于产业链下游的零售分销企业。在经营过程中,服装行业面临诸多挑战,如流行周期短、季节性强,市场变化快;…...
AI绘画探索人工智能的未来
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-8fL64RHWVzwpzR6m {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
Java 的 Map 與 List
小心获得List<Map>的size List<Map>没有赋值前,JVM会初始化,所以List<Map>会有一个25的size()。 通過重新new 一個ArrayList 轉化 resTask.setList(new ArrayList<Group>(custMap.values())); 无序的M…...
C++从零开始的打怪升级之路(day24)
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于vector的一些函数 1.构造函数 vector() …...
用 CanvasKit 实现超级丝滑的原神地图(已开源)!!!
首先给大家送上预览地址: 官网地址:https://webstatic.mihoyo.com/ys/app/interactive-map/index.html canvaskit地址:http://106.55.55.247/ky-genshin-map/ 为什么 canvaskit 有如此高的性能? 第一个问题,官方网页…...
MySQL原理(三)锁定机制(2)表锁行锁与页锁
前面提到,mysql锁按照操作颗粒分类,一般认为有表级锁、行级锁、页面锁三种。其实还有一种特殊的全局锁。 锁场景问题全局锁全库逻辑备份加了全局锁之后,整个数据库都是【只读状态】,如果数据库里有很多数据,备份就会花…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...
基于Python的气象数据分析及可视化研究
目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...
在ubuntu等linux系统上申请https证书
使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具,支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上: sudo apt update sudo apt install certbot申请证书 纯手动方式(不自动配置)&…...
