当前位置: 首页 > news >正文

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经典案例

前言&#xff1a; AWK是一种专门用于文本处理的编程语言&#xff0c;它被广泛用于数据提取和报告生成&#xff0c;也是企业笔试面试常考的内容&#xff0c;以下34题是awk的用法案例&#xff0c;希望可以帮到你&#xff01; 1.查看TCP连接状态 [rootnode1 ~]# netstat -nat | a…...

如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图三

Mermaid 系列 如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图一如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图二 1.如何创建甘特图 Gantt 甘特图以条形图的形式用作可视化表示。它有效地展示了项目的时间表&#xff0c;揭示了各个项目组件完成所需的持续时间…...

考研经验总结——政治篇

文章目录 一、前言二、学习情况三、最后 一、前言 不要提前&#xff0c;不要提前&#xff0c;不要提前&#xff0c; 我曾在暑假的时候上了7天左右的政治课&#xff0c;讲真话是很有趣的&#xff0c;并且对于自身的世界观、人生观和价值观的改善也是相当不错的&#xff0c;把我…...

春招秋招,在线测评到底难不难?

现在很多企业在春招的时候&#xff0c;都会有一个在线测评的环节&#xff0c;目的当然就是希望更加了解清楚毕业生的综合能力以及其他方面的素质&#xff0c;好让HR可以根据岗位筛选出能力达标的人才。所以&#xff0c;现在不少即将面对春招的大学毕业生&#xff0c;比较关心的…...

数学建模比赛中,使用大语言模型如chatgpt、文心一言该如何写Prompt(提示)?

在大型语言模型中&#xff0c;"prompt"&#xff08;中文常译为“提示”或“引导”&#xff09;是指提供给模型的输入文本&#xff0c;用于指示或引导模型产生特定的输出。它的作用主要是告诉模型用户想要得到什么样的信息或完成什么样的任务。 例如&#xff0c;在使…...

tcpdump 抓包无法落盘

文章目录 问题背景解决办法 问题背景 在嵌入式设备中(Linux系统)&#xff0c;为了分析两个网络节点的通讯问题&#xff0c;往往需要用到tcpdump&#xff0c;抓一个.pcap的包在PC端进行分析。博主在实际操作中发现&#xff0c;抓包无法实时落盘。 解决办法 # 下面的命令是写在…...

【网站项目】066农家乐信息平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

idea/webstorm 创建Vue实例 Unresolved type Vue 处理方法

1.电脑本地安装node.js 官网下载 2. 其他: 未排除变量,前期试错(以下步骤配置了,但不确定对解决问题是否有帮助)...

C++ 11新特性之语法甜点2

概述 C 11中引入了许多简化编程工作的语法上的新特性&#xff0c;我们暂且美其名曰&#xff1a;“语法甜点”。书接上篇&#xff0c;我们继续介绍C 11中的这些“语法甜点”&#xff0c;也是第二篇关于“语法甜点”的文章。 语法甜点6&#xff1a;模板右边双括号 在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代理协议有哪些?爬虫代理如何被合理使用?

随着互联网的普及和发展&#xff0c;IP代理作为一种网络代理方式&#xff0c;越来越受到人们的关注。IP代理协议是网络代理的一种规范&#xff0c;它规定了代理服务器与客户端之间进行通信的规则。了解IP代理协议对于使用代理的人来说非常重要&#xff0c;因为它可以帮助我们更…...

Vue学习笔记(二)快速入门

Vue学习笔记&#xff08;二&#xff09;快速入门 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方法不起效

问题描述&#xff1a; 在跟项目的时候&#xff0c;我们可能会遇到我们click点击时&#xff0c;需要执行多个操作&#xff0c;如&#xff1a;调用方法&#xff0c;修改变量等。举个例子&#xff0c;像这样&#xff0c;我们在管理项目中想要编辑某一值&#xff0c;编辑好后&…...

服装行业ERP系统解决方案

我国的服装企业大多属于劳动密集型&#xff0c;主要有三种类型&#xff1a;自有品牌服装生产销售企业、接订单生产型企业及处于产业链下游的零售分销企业。在经营过程中&#xff0c;服装行业面临诸多挑战&#xff0c;如流行周期短、季节性强&#xff0c;市场变化快&#xff1b;…...

AI绘画探索人工智能的未来

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-8fL64RHWVzwpzR6m {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

Java 的 Map 與 List

小心获得List<Map>的size List<Map>没有赋值前&#xff0c;JVM会初始化&#xff0c;所以List<Map>会有一个25的size&#xff08;&#xff09;。 通過重新new 一個ArrayList 轉化 resTask.setList(new ArrayList<Group>(custMap.values())); 无序的M…...

C++从零开始的打怪升级之路(day24)

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前&#xff0c;我学了一点点C语言还有简单的数据结构&#xff0c;如果有小伙伴想和我一起学习的&#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于vector的一些函数 1.构造函数 vector() …...

用 CanvasKit 实现超级丝滑的原神地图(已开源)!!!

首先给大家送上预览地址&#xff1a; 官网地址&#xff1a;https://webstatic.mihoyo.com/ys/app/interactive-map/index.html canvaskit地址&#xff1a;http://106.55.55.247/ky-genshin-map/ 为什么 canvaskit 有如此高的性能&#xff1f; 第一个问题&#xff0c;官方网页…...

MySQL原理(三)锁定机制(2)表锁行锁与页锁

前面提到&#xff0c;mysql锁按照操作颗粒分类&#xff0c;一般认为有表级锁、行级锁、页面锁三种。其实还有一种特殊的全局锁。 锁场景问题全局锁全库逻辑备份加了全局锁之后&#xff0c;整个数据库都是【只读状态】&#xff0c;如果数据库里有很多数据&#xff0c;备份就会花…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...