Linux进阶命令-awkuniq

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top

Linux进阶命令-ps&kill

Linux进阶命令-sort&wc

Linux进阶命令-sed&split

Linux进阶命令-awk&uniq(本章节)

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen

Linux进阶命令-lsof

Linux进阶命令-小结

shell的三剑客我们前面已经讲过了grep和sed,今天我们讲awk。无论是grep 还是sed 相对都比较简单,awk可以简单,也可以复杂,复杂它可以算一门编程语言,甚至有多本图书来介绍这个命令。当然我们这里只介绍常规的操作,或者说我最常用的方法。

awk 是一种强大的文本处理工具,可以用于对文本文件中的数据和文本进行扫描和处理。它特别适合于处理结构化的文本数据,支持灵活的文本模式匹配、字段分割、条件语句和循环等功能。awk 常用于命令行环境下,可以作为一个完整的编程语言来处理数据。

awk

基本语法

awk 'pattern { action }' file
  • pattern:模式或条件,用于选择匹配的行。

  • { action }:动作块,对符合模式的行执行的操作。

  • file:要处理的文件名。

基本工作流程

  1. awk 逐行读取文件或标准输入。

  2. 对于每一行,检查是否匹配指定的模式。

  3. 如果匹配,则执行定义的动作块。

常用操作

打印操作:

awk '{ print $1 }' file.txt

这会打印文件 file.txt 的每一行的第一个字段。

自定义分隔符和字段操作:

awk -F',' '{ print $2 }' data.csv

这会使用逗号作为分隔符,打印文件 data.csv 的每行的第二个字段。

循环和逻辑控制:

awk '{ for (i=1; i<=NF; i++) if ($i ~ /pattern/) print $i }' file.txt

这会逐行遍历文件 file.txt,并打印每行中包含 pattern 的字段。

示例

打印文件 students.txt 的每一行:

awk '{ print }' students.txt

计算文件 grades.txt 中第二列的平均值:

awk '{ sum += \$2 } END { print "Average:", sum/NR }' grades.txt

打印文件 sales.csv 中包含日期 2023-01-01 的行:

awk '/2023-01-01/ { print }' sales.csv

使用场景

  • 数据提取和报告生成: 从结构化文件中提取特定字段或行,并生成报告。

  • 数据转换和清洗: 根据特定规则或条件对数据进行转换和清理。

  • 日志分析和过滤: 在日志文件中查找特定模式或条件,并分析相关数据。

  • 批量处理: 对大量数据进行统计、分析或格式化处理。

uniq

uniq 是一个用于处理文本文件的命令行工具,主要功能是去除重复的行。它通常与 sort 命令一起使用,因为 uniq 只能去除相邻的重复行。

基本用法

uniq [选项] [输入文件] [输出文件]

常用选项

  • -c:在输出行前面加上每行出现的次数。

  • -d:仅显示重复出现的行。

  • -u:仅显示不重复的行。

  • -i:忽略大小写差异。

  • -w N:仅比较前 N 个字符来判断重复。

示例

去除重复行并保留唯一行:

sort file.txt | uniq

这个命令首先对 file.txt 进行排序,然后 uniq 去除重复行。

显示每行出现的次数:

sort file.txt | uniq -c

仅显示重复的行:

sort file.txt | uniq -d

这个命令会显示在 file.txt 中重复出现的行。

忽略大小写的重复:

sort -f file.txt | uniq -i

这个命令会忽略大小写,并去除重复行。

总结

  1. 其实还有个cut命令也能实现部分awk的切割功能,只是它分割符要求比较严格,我都是学Linux的时候学习过这个命令,工作中没用过。

  2. 一般总结这些命令会组合起来用,主要用于分析web服务器的访问日志。

#统计访问者ip数量
cat access.log |awk '{print $1}' |sort |uniq |wc -l
#统计访问量最大的10个ip地址
#检查攻击痕迹
cat access.log |awk '{print $1}' |sort |uniq -c|head

图片

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142962.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

48.面向对象综合训练-手机

1.标准JavaBean类 public class Phone {//属性private String brand;//品牌private String name; //名称private double price;//价钱//给成员变量brand赋值public void setBrand(String b) {brand b;}//对外提供brand的值public String getBrand() {return brand;}//给成员变…

YOLOV5 yolov3绝缘子检测代码+数据集 绝缘子数据集 classes :Insulator

输电线绝缘子数据集详解 输电线绝缘子作为电力系统中的重要组件&#xff0c;其运行状态直接影响到电网的安全稳定运行。近年来&#xff0c;随着人工智能技术的进步&#xff0c;特别是计算机视觉和深度学习的发展&#xff0c;输电线绝缘子的缺陷检测已经成为自动化巡检和维护的…

vivado中选中bd文件后generate output product是什么用,create HDL wrapper是什么用

vivado中选中bd文件后generate output product是什么用 在Vivado中&#xff0c;“Generate Output Products” 是一个重要的步骤&#xff0c;它用于生成IP核的输出产品&#xff0c;这些产品是将IP核集成到设计中所需的文件。这些输出产品包括&#xff1a; 综合文件&#xff…

STM32外设-0.96寸OLED显示屏

江科大OLED教程&#xff1a;01-快速上手&#xff08;上集&#xff09;_哔哩哔哩_bilibili 01 0.96寸OLED显示屏原理 1.1 0.96寸OLED显示屏简介 适用器件&#xff1a; 0.96寸OLED显示屏&#xff08;驱动芯片&#xff1a;SSD1306 / SSD1315&#xff09; 1.3寸OLED显示屏&…

C++--类的实例化

一、实例化的概念 用类类型在屋里内存中创建对象的过程&#xff0c;称为类实例化出对象 类是对对象进行一种抽象描述&#xff0c;是一个模型一样的东西&#xff0c;限定了类有哪些成员变量&#xff0c;这些成员变量只是声明&#xff0c;没有分配空间&#xff0c;用类实例化出…

Bugku---密码学---乐谱密码

题目出处&#xff1a;首页 - Bugku CTF ✨打开后发现是一张乐符图 ✨一般我们所熟悉的「Do Re Mi Fa Sol La Si」&#xff0c;若写成音名&#xff0c;即是「C D E F G A B」。不过德国人习惯使用的音名则是「C D E F G A H」&#xff0c;「B」代表 音名B♭ 。 C也就是后面的4&…

Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍

IntelliCode 不知在多久以前&#xff0c;我装上了Visual Studio 2019&#xff0c;写代码时&#xff0c;就注意到了下面这样的东西&#xff1a;带五角星的提示。 这个带五角星的提示功能叫做IntelliCode。 我们知道Visual Studio 有个强大的功能叫做Intellisense(智能感知)&am…

与Linux的初见

一、UNIX发展历史&#xff1a; 1965年&#xff0c;美国麻省理工学院&#xff08;MIT&#xff09;、通用电气公司&#xff08;GE&#xff09;及AT&T的贝尔实验室联合开发Multics工程计划&#xff0c;其目标是开发一种交互式的具有多道程序处理能力的分时操作系统&#xff0…

算法leecode笔记

具体代码&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hashtable;for (int i 0; i < nums.size(); i) {auto it hashtable.find(target - nums[i]);if (it ! hashtable.end…

phpstudy 建站使用 php8版本打开 phpMyAdmin后台出现网页提示致命错误:(phpMyAdmin这是版本问题导致的)

报错提示&#xff1a; 解决方法&#xff1a;官网下载phpmyadmin 5.2.1版本。 下载地址&#xff1a;phpMyAdmin 将网站根目录phpMyAdmin4.8.5里面的文件换成 官网下载的5.2.1版本即可。 重启网站&#xff0c;打开phpMyAdmin后台即可&#xff08;若打不开更改 mysql密码即可&am…

java多线程模拟多个售票员从同一个票池售票

程序功能 这段代码模拟了多个售票员从一个有限的票池中售票的过程。主要功能如下&#xff1a; 票池共有50张票&#xff0c;多个售票员&#xff08;线程&#xff09;并发进行售票。 使用同步机制确保线程安全&#xff0c;避免多个售票员同时出售同一张票。 每个售票员不断检查票…

阿里轻量应用服务器绑定聚合网域名宝塔镜像

服务器配置&#xff1a;地区:香港 、应用镜像:BT-Panel 初始化操作 BT-Panel使用步骤 1 获取面板管理密码 1. 复制密码查询命令 2. 远程登录服务器 3. 粘贴-回车执行 4.获取密码 2 登录面板 1.到防火墙页面开启8888端口 2. http://公网ip:8888 3. 输入管理帐号密码 …

02-查找Mac系统安装的python解释器路径

第一种方法 import sys print(sys.path) 第二种方法 在终端控制台使用命令 which python3

VTD激光雷达(6)——06_OptiX_Variables

文章目录 前言一、总结 前言 感谢VTD官方学习资料 一、 1、 总结 学海无涯回头是岸

阿德里安·欧拉博士Dr Adrian Euler

阿德里安欧拉博士 金融学副教授 https://apps.dur.ac.uk/biography/image/777 屬属 联系商学院金融学副教授 传 杜伦大学商学院金融学副教授&#xff08;教学&#xff09;阿德里安欧拉博士是一位金融理论家和实践家&#xff0c;在行业和高等教育实践方面拥有丰富的经验 - 教学、…

电脑的固态硬盘

常见种类 1.SATA接口&#xff1a;一般由一个铁盒子&#xff0c;里面装着控制芯片&#xff0c;以及内存颗粒组成的SSD硬盘。 比机械硬盘读写速度快&#xff0c;比M.2读写速度慢。目前常用的是3.0 2.M.2 PCI-E接口&#xff1a;无机械零件设计&#xff0c;相当于没有噪音。速度比…

JDBC导图

思维歹徒 一、使用步骤 二、SQL注入 三、数据库查询&#xff08;查询&#xff09; 四、数据库写入&#xff08;增删改&#xff09; 五、Date日期对象处理 六、连接池使用 创建连接是从连接池拿&#xff0c;释放连接是放回连接池 七、事务和批次插入 八、Apache Commons DBUtil…

【Windows】使用 WMI 获取系统版本信息

目录 获取系统版本信息代码 获取系统版本信息 通过 RtlGetNtVersionNumbers 获取系统版本的方法可能不适用于所有情况&#xff0c;而且将要过时&#xff08;被废弃&#xff09;。下面介绍一种通过 WMI 查询并根据版本号进行划分的系统版本解析工具&#xff0c;其他方法还有通过…

【数据结构初阶】队列接口实现及用队列实现栈超详解

文章目录 1. 概念1. 1 队列底层结构选型1. 2 队列定义 2. 接口实现2. 1 初始化2. 2 判空2. 3 入队列2. 4 出队列2. 5 队尾元素和队头元素和队列元素个数2. 6 销毁2. 7 接口的意义 3. 经典OJ题3. 1 用队列实现栈3. 1. 1 栈的定义3. 1. 2 栈的初始化3. 1. 3 入栈3. 1. 4 出栈3. 1…

微调大模型不再难:LoRA方法带你轻松节省99%的训练成本!

我们之前说大模型有四种玩家&#xff0c;其中前三种都是要做模型训练的。而大部分公司或个人&#xff0c;都是在第二种开源大模型的基础上来做训练。 而这种训练方式又分为两种。一种要么就是从头训练&#xff0c;要么就Fine-tuning接着开源模型来训练&#xff0c;在基座模型已…