Linux系统命令三剑客awk

一、awk引子

        awk是 Linux 里命令里处于【扫地僧】的地位
        awk是一门语言,也是一个命令。
        最擅长处理文本的语言或命令
        Linux有三剑客命令: grep/sed/awk
        三剑客各自特长:
        grep #过滤内容
        sed #取行
        awk #取列 --- 取行 --- 过滤一、

二、什么是awk

        awk是一门语言,通过处理复杂文本字符串,取到最终需要的内容。
        C、 C++ 开发人员,处理字符串几乎都会用 awk
        命令行来说,掌握awk 命令基本使用

三、awk功能

常用功 能是【取列】,但是也可以【取行】和【过滤】。
awk '{print $1}' 文件 ##分隔符是空格
awk -F ":" '{print $1}' 文件 ##指定冒号为分隔符
        注意写法:一对单引号里加一对大括号,里面加print $1 ,结尾加操作的文件
        说明:
        1)取的内容是每一行固定列或整行
        2)不同列的内容默认分隔符是 [ 空格 ]
        3) $1 是第一列, $2 是第二列 ,........ $NF 最后一列,倒数第二列 $(NF-1) $0 是整行
        4) -F 指定分隔符, ":" 是具体的分隔符,使用双引号引起来

小试牛刀练习1

#准备
[root@oldboy ~]# cd ~
[root@oldboyedu ~]# echo "oldboy oldgirl" >>oldboy.txt
[root@oldboyedu ~]# echo "oldboy oldgirl" >>oldboy.txt
[root@oldboyedu ~]# cat oldboy.txt
oldboy oldgirl
oldboy oldgirl
#取第一列
[root@oldboy ~]# awk '{print $1}' oldboy.txt
oldboy
oldboy
#取第二列
[root@oldboy ~]# awk '{print $2}' oldboy.txt
oldgirl
oldgirl
#取整行
[root@oldboy ~]# awk '{print $0}' oldboy.txt
oldboy oldgirl
oldboy oldgirl
#取第1列和第二列
[root@oldboy ~]# awk '{print $1,$2}' oldboy.txt
oldboy oldgirl
oldboy oldgirl
指定分隔符过滤(-F)
1 、指定分隔符过滤基本语法
## 语法: awk -F " 分隔符 " '{print $1}' /etc/passwd
1)取/etc/passwd的第1列
awk -F ":" '{print $1}' /etc/passwd
##简单写法
awk -F: '{print $1}' /etc/passwd
2)取/etc/passwd的第2列
awk -F ":" '{print $2}' /etc/passwd
3)取/etc/passwd的第整行
awk -F ":" '{print $0}' /etc/passwd
4)取/etc/passwd的尾列
awk -F ":" '{print $NF}' /etc/passwd
5)取/etc/passwd的倒数第2列
awk -F ":" '{print $(NF-1)}' /etc/passwd

指定分隔符同时输出多列语法:

awk -F "分隔符" '{print $1,$2}' 文件 ##逗号是空格。
1)取/etc/passwd的第1列和第2列
awk -F ":" '{print $1,$2}' /etc/passwd
2)取/etc/passwd的第1列、第3列和最后一列
awk -F ":" '{print $1,$3,$NF}' /etc/passwd
3)在输出的结果中加想要加的内容,这里加oldboy
awk -F: '{print $1,"oldboy",$2}' /etc/passwd
同时指定多分隔符
#语法:awk -F "[ /:=]" '{print $1,$2}' 文件
#遇到空格,斜线,冒号,等号都认为是分隔符。
#练习1:过滤ip a结果中的ip地址
##同时指定空格和斜线作为分隔符
[root@oldboy ~]# ip a|grep "/24"|awk -F "[ /]" '{print $6}'
10.0.0.128
#练习2:过滤stat /etc/hosts中的0644
[root@oldboy ~]# stat /etc/hosts|grep 0644|awk -F "[(/]" '{print $2}'
0644
多分隔符连续
#语法:awk -F "[ /:=]+" '{print $1,$2}' 文件
#遇到空格,斜线,冒号,等号都认为是分隔符。
#碰到连续的指定分隔符算一个分隔符。
#练习1:过滤ip a结果中的ip地址
##同时指定空格和斜线作为分隔符
[root@oldboy ~]# ip a|grep "/24"|awk -F "[ /]+" '{print $3}'
10.0.0.128
#练习2:把文件中的数字取出来
[root@oldboy ~]# echo ===1---2///3/@@@@4 >oldboy.txt
[root@oldboy ~]# cat oldboy.txt
===1---2///3/@@@@4
[root@oldboy ~]# awk -F '[=/@-]+' '{print $2,$3,$4,$5}' oldboy.txt
1 2 3 4

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语新概念2-回译法-lesson6

我刚刚搬家去柏林大街的房子里。昨天一个流浪汉敲我的门,他想我寻求一顿饭和一杯啤酒。未拒绝了这个请求之后,这个流浪汉倒立着唱歌,我给他了一顿饭,他吃了食物并且喝了啤酒,然后他把一片奶酪放到他的口袋里然后走开了。过了一会儿,一个领居告诉我关于这个流浪汉的事情。…

Centos7 K8S 集群 - kubeadm搭建方式

机器准备 搭建环境是centos7, 四核心4G内存四台机器 一个master节点,一个etcd,两台node 机器名称IP 地址master192.168.1.127node1192.168.1.129node2192.168.1.130node3192.168.1.131 机器时间同步 各节点时间要求精确同步,可以直接联网…

算法设计与分析(超详解!) 第二节 递归与分治

1.递归定义 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致…

【备战蓝桥杯】2024蓝桥杯赛前突击省一:图论模版篇

2024蓝桥杯赛前模版突击:图论篇 图论在蓝桥杯中一般考的不难,如果有图论的题,就基本是模板题,知道板子就有分了。 邻接表 本文使用方法1的方式实现邻接表 邻接表1 static int[] dist new int[N],st new int[N]; static int…

LeetCode-热题100:226. 翻转二叉树

题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入: root [4,2,7,1,3,6,9] 输出: [4,7,2,9,6,3,1] 示例 2: 输入: root [2,1,3] 输出: […

我为什么不放弃独立博客

背景 我为什么要写博客?为什么要自己搭博客网站?要搭什么样的博客网站?哪些功能有意义哪些没有意义? 分析 独立博客,我没有放弃! 我为什么要写博客?为什么要自己搭博客网站?要搭什…

GlusterFS 分布式文件系统 搭建及使用

一、GlusterFS GlusterFS 是一个开源的分布式文件系统,旨在提供高性能、可扩展性和可靠性,适用于现代数据中心和云环境。它以横向扩展的方式设计,可以在多台服务器之间共享文件系统,为应用程序提供统一的文件存储服务。 Gluster…

【React Router】初识路由(中)

加载数据 这一节主要强调 URL、布局和数据 的解耦。 在根模块文件中创建并导出一个加载器函数,并配置到路由。 getContacts() 是我们自己封装的数据请求 API,新增的数据暂时存储到 localforage。 export async function loader() {const contacts a…

Python学习从0开始——005数据结构

Python学习从0开始——005数据结构 一、列表list二、元组和序列三、集合四、字典五、循环技巧六、条件控制七、序列和其它类型的比较 一、列表list 不是所有数据都可以排序或比较。例如,[None, ‘hello’, 10] 就不可排序,因为整数不能与字符串对比&…

【C 数据结构】线性表

文章目录 【 1. 线性表 】【 2. 顺序存储结构、链式存储结构 】【 3. 前驱、后继 】 【 1. 线性表 】 线性表,全名为线性存储结构,线性表结构存储的数据往往是可以依次排列的(不考虑数值大小顺序)。 例如,存储类似 {1…

蓝桥杯-数组分割

问题描述 小蓝有一个长度为 N 的数组 A 「Ao,A1,…,A~-1]。现在小蓝想要从 A 对应的数组下标所构成的集合I 0,1,2,… N-1 中找出一个子集 民1,那么 民」在I中的补集为Rz。记S∑reR 4,S2∑rERA,,我们要求S、和 S,均为偶数,请问在这…

c语言-----数组知识汇总

前言 本文为我学习数组知识点之后,对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说,数组就是一个数据组,像一个箱子,里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法: 数据类型 数组名[数组…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息(4.14) 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截,ヾ(◍∇◍)ノ゙加…

基于SpringBoot实现的在线拍卖系统

系统开发环境 编程语言:Java数据库:MySQL容器:Tomcat工具:IDEA/Ecilpse、Navicat、Maven 系统实现 管理员功能模块 首页 修改密码 用户管理 商品类型管理 拍卖商品 竞拍公告 轮播图 历史竞拍管理 竞拍订单管理 留言板管理 用户…

在windows系统中【.gz.tar】和【.whl】文件分别应该怎么下载到conda的某个虚拟环境中

在 Windows 系统中&#xff0c;你可以按照以下步骤将 .gz.tar 和 .whl 文件下载到 Conda 的某个虚拟环境中&#xff1a; 激活虚拟环境&#xff1a;打开 Anaconda Prompt 或者命令行窗口&#xff0c;使用以下命令激活你想要安装文件的虚拟环境&#xff1a; conda activate <虚…

多输入多输出 | Matlab实现XGboost多输入多输出预测

多输入多输出 | Matlab实现XGboost多输入多输出预测 目录 多输入多输出 | Matlab实现XGboost多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现XGboost多输入多输出预测 1.data为数据集&#xff0c;10个输入特征&#xff0c;3个输出变量…

Unity数据持久化—Json存档

项目需求为&#xff1a; 1.实现存档列表&#xff0c;显示存档截图&#xff0c;可以查看之前保存的所有存档 2.点击存档直接加载到场景 首先&#xff0c;定义两个类&#xff0c;用于声明存档列表和存档所需要的List [System.Serializable] public class SaveData {//存储目标…

使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤

加载远程Vue文件 vue3-sfc-loader vue3-sfc-loader &#xff0c;它是Vue3/Vue2 单文件组件加载器。 在运行时从 html/js 动态加载 .vue 文件。无需 Node.js 环境&#xff0c;无需 (webpack) 构建步骤。 主要特征 支持 Vue 3 和 Vue 2&#xff08;参见dist/&#xff09;仅需…

macad.presentation解析events,helpers,multicover,resourcesextention

1.events using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Interop;namespace Macad.Presentation {// 该类用于启用鼠标…

CentOS 7源码包与RPM包软件安装详解

CentOS 7源码包与RPM包软件安装详解 在CentOS 7中,软件包的安装主要有两种方式:源码包安装和RPM包安装。这两种方式各有优缺点,适用于不同的场景和需求。 一、源码包安装 源码包安装指的是从软件的源代码开始,通过编译过程将源代码转换为机器语言,进而实现软件的安装。…