Linux 三剑客

grep

        grep主打的就是查找功能 ,它能够在一个或者多个文件中搜索某一特定的字符模式。

grep的语法

        grep [选项] 模式 文件名

先说选项:

1.选项

        要么是正则要么是字符串

-c       列出共出现多少次

-i        忽略大小写

-n       在前面列出行号

-v       列出没有匹配的 换句话说 反着来

-r        迭代

 2. 模式

        这里说白了就是写你要查的目标字符串 可以用“ ”隔开来构成字符串 当然也可以使用 正则表达式

sed

        啥是sed?以我的理解就是以非交互的形式 对一个文件进行增删改查,所以我可以认为sed是一个行编辑器。

sed的原理

        我们在使用之前要了解其原理的,它其实是将原数据拷贝到内存上处理,因此操作的结果是对原数据没有任何“伤害”的。

sed 的语法

        sed [选项] '{command}[flags]' [filename]

那么我们先介绍内部命令也就是command部分的内容

1.command

        这里其实可以叫做内部命令,我们将从增删改查的方向来进行讲解:

        1.增

a + 要加的内容 (默认每行)

当然可以在a前面添加模糊匹配 形如 /^***/ 这样的字段  ***表示的是要模糊查询的目标字符

我们注意到了上图表达了  a 就是尾插 那肯定还有一个前插咯

i 代表的是 前插~~ 用法与上述类似

2.删

其关键字就是d 

3.改

又分为替换、转换;

        s:替换的意思就是将原字符串替换成一个新的字符串~~

将全部的student替换成boy了/g代表的就是全部 当然这是flag的内容

       y: 转换是对字符就比如说

         c:是全文改变

4.查

        那就是 p

要注意的是直接使用p的话会重复打印 因为会打印俩部分 一是文本还有就是内存的也会被打印出来

2.选项

        所有命令的选项都是对命令的增强

-e 植入多个命令 用;隔开

-f 调用写入文件里面的命令

-n 抑制内存输出

-r 正则表达式

-i 就是直接修改源文件了 而不是在内存上

        当然这里要考虑到安全性 因此 基本上使用的是 -i.xxx 搞一个备份存储上去

3.标志(flag)

        跟在command后面的做补充

数字 : 就代表第几个进行操作(可能会找到多个匹配的点)

g:全部

w:写入到...进行备份

p:打印输出

awk

        是一种可以处理数据,产生格式化报表的语言

先搞懂 如何划分行列的:行区分(换行符) 列区分(一个/多个 空格 或者是tab制表符)

awk语法

        awk [options] [BEGIN]{program}[END][FILENAME]

有几个要注意的点:一是命令需要用 ' ' 包起来,二是要有{}包裹program

接下来我将从 行截取 列截取分别讲解awk的基本应用

列截取(字段)

        我们将数据的列称作字段,具体的截取规则如下

$0 代表的是整个文本

$N 代表第几列

$NF 代表了最后一列

当然了,这里应该是默认空格或者多个空格作为分割的,我们也可以自定义一下分隔符,也是选项中的内容了 -F "**" (**代表了自定义的分隔符)

行截取(记录)

        我们将行叫做记录~~,那么对于行的截取有俩种方式:1、正则表达式   2、NR指定行号

直接用NR指定的方式如下:

 

那么使用正则表达式的话:

 

以上内容既然有了行,列;我们就可以定义某个点咯~~

 

程序的优先级

        在awk语法上面,我们注意到了有BEGIN END的这样子的字段,那么代表的啥呢?

BEGIN :处理数据源之前干什么        也就是说 不需要有数据源就可以执行了

PROGRAM :对数据源干了什么

END : 处理完数据源之后干了什么

         

注意到上面的命令中是没有数据源的。

高级应用

        既然前面提到了awk是一门语言,那肯定有变量、运算了。

 1.变量(容器)

        说到容量,简单理解就是一个放在内存的临时容器,需要临时存储就放进去,需要用到就取出来。

        

当然还有数组了:         

 用法都差不多,不再赘述

2.运算

        赋值运算        =

        比较                > < >= <= ==

        数学                + - * / %

        逻辑                && || !

        匹配                ~ !~ (模糊)    == (精确)

 

 

0代表假..

环境变量

        常见的内置变量:

FIELDWIDTHS 定义了字段的宽度(列与列之间的)

FS 相当于-F 可以自定义分隔符

OFS 输出想要呈现到屏幕上的分隔符

RS 那就是行分隔符咯

ORS 同理

 

 

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

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

相关文章

阿里云centos9stream安装宝塔+vscode(code-server)集成云端开发环境

一、 安装宝塔面板 官网 https://www.bt.cn/new/download.htm 题外话&#xff1a;虽然感觉现在宝塔没以前好用了&#xff0c;而且有centos7、8 mysql编译导致OOM服务器挂掉无法ssh登录的情况&#xff0c;但他还是远程管理服务器的好选择&#xff0c;提示宝塔只支持最新的centos…

常见矿石材质鉴定VR实训模拟操作平台提高学员的学习效果和实践能力

随着“元宇宙”概念的不断发展&#xff0c;在矿山领域中&#xff0c;长期存在传统培训内容不够丰富、教学方式单一、资源消耗大等缺点&#xff0c;无法适应当前矿山企业发展需求的长期难题。元宇宙企业借助VR虚拟现实、web3d开发和计算机技术构建的一个虚拟世界&#xff0c;为用…

SpringBoot虚拟路径映射

要求&#xff1a;访问&#xff1a;127.0.0.1/image/下的文件时&#xff0c;自动映射到真实路径&#xff1a;D:Files\。 virtualFileDepositPath: /image/** realityFileDepositPath: C:\Users\xin\Desktop\imgCreate\Files\ import org.springframework.beans.factory.annota…

编写c语言程序调用openssl编译出的动态链接库

文章目录 一、编译生成链接库二、示例一&#xff1a;调用RAND_bytes函数三、示例二&#xff1a;调用SHA256 一、编译生成链接库 下载安装openssl并编译生成链接库的过程在我的另一篇文章中已经详细说明了&#xff1a;Ubuntu中安装OpenSSL 此外&#xff0c;我们还需要提前了解…

【如何获取数据库表的字段并拼接】

获取数据库表的字段并拼接 需求场景操作步骤获取该数据库对应表中所有的字段对获取到的字段进行处理 需求场景 在写sql语句时&#xff0c;我要获取到该表的大部门字段来做处理&#xff0c;一个个粘贴复制太费事了&#xff0c;所以我决定执行sql语句把表中字段查询出来 操作步…

微服务之Nacos

1 版本说明 官网地址&#xff1a; https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1 2021.x 分支 适配 SpringBoot 2.4, Spring Cloud 2021.x 版本及以上的Spring Cloud Alibaba 版本如下表&#xff08;最新版本用*标记&am…

pytorch/tensorflow 直接给张量中的某个位置的值赋值,操作不可导。

问题&#xff1a;给一个tensor A中[i,j]&#xff0c;赋值p。直接操作A[i,j]p可能会导致值覆盖&#xff0c;操作不可导。 解决方案&#xff1a;通过引入一个额外的mask实现。 mask[i,j] 0 mask tf.convert_to_tensor(mask, dtypetf.float32) A (A * mask) (p * (1-mask))p…

建造者与工厂方法的区别

建造者模式最主要的功能是基本方法的调用顺序安排&#xff0c;也就是这些基本方法已经实现了&#xff0c;通俗地说就是零件的装配&#xff0c;顺序不同产生的对象也不同&#xff1b;而工厂方法则重点是创建&#xff0c;创建零件是它的主要职责&#xff0c;组装顺序则不是它关心…

了解XSS攻击与CSRF攻击

什么是XSS攻击 XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;是一种常见的网络安全漏洞&#xff0c;它允许攻击者在受害者的浏览器上执行恶意脚本。这种攻击通常发生在 web 应用程序中&#xff0c;攻击者通过注入恶意脚本来利用用户对网站的信任&…

springboot Actuator未授权访问漏洞

management:endpoints:enabled-by-default: false #关闭所有默认端点关闭所有端点&#xff08;开启时默认开放info和health&#xff09;endpoint:# 开启你想开放的端点info&#xff1a;enabled&#xff1a;true #开启info端点 其他相关配置说明 Spring Boot 2.X 中&#xff0…

freemarker

freemarker Freemarker的基本语法及使用大全 freemarker的基本语法及入门基础 文本&#xff1a;直接输出的内容部分注释&#xff1a;不会输出的内容&#xff0c;格式为<#-- 注释内容 -->取值(插值)&#xff1a;代替输出数据模型的部分&#xff0c;格式为${数据模型}或…

RHCE——十三、Shell自动化运维编程基础

Shell 一、为什么学习和使用Shell编程二、Shell是什么1、shell起源2、查看当前系统支持的shell3、查看当前系统默认shell4、Shell 概念 三、Shell 程序设计语言1、Shell 也是一种脚本语言2、用途 四、如何学好shell1、熟练掌握shell编程基础知识2、建议 五、Shell脚本的基本元素…

docker-compose安装opengauss数据库

文章目录 1. docker-compose.yaml2. 部署3. 卸载4. 连接 1. docker-compose.yaml mkdir -p /root/i/docker-compose/opengauss && cd /root/i/docker-compose/opengausscat <<EOF> /root/i/docker-compose/opengauss/docker-compose.yaml version: 3 service…

计算机竞赛 基于机器视觉的停车位识别检测

简介 你是不是经常在停车场周围转来转去寻找停车位。如果你的车辆能准确地告诉你最近的停车位在哪里&#xff0c;那是不是很爽&#xff1f;事实证明&#xff0c;基于深度学习和OpenCV解决这个问题相对容易&#xff0c;只需获取停车场的实时视频即可。 该项目较为新颖&#xf…

MongoDB实验——在MongoDB集合中查找文档

在MongoDB集合中查找文档 一、实验目的二、实验原理三、实验步骤1.启动MongoDB数据库、启动MongoDB Shell客户端2.数据准备-->person.json3.指定返回的键4 .包含或不包含 i n 或 in 或 in或nin、$elemMatch&#xff08;匹配数组&#xff09;5.OR 查询 $or6.Null、$exists7.…

Oracle中序列删除的正确语句(oracle删除序列语句)

Oracle中序列删除的正确语句 Oracle 是由世界上最大的软件公司 Oracle Corporation 提供的关系型数据库管理系统&#xff0c;拥有广泛的应用和功能&#xff0c;如存储过程、触发器、视图、序列以及其他的复杂的特性&#xff0c;能够满足丰富的业务需求。本文主要研究Oracle中序…

Java进阶篇--HttpClient工具类

目录 什么是HttpClient HttpClient的注意事项 HttpClient的使用流程 HttpClient常用方法 HttpClient工具类 添加依赖 什么是HttpClient HttpClient 是 Apache HttpComponents 的一个子项目&#xff0c;旨在提供高效的、最新的、功能丰富的 HTTP 协议客户端编程工具包。它…

【JavaScript精通之道】掌握数据遍历:解锁现代化遍历方法,提升开发效率!

​ &#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4da; 前言 &#x1f4d8; 1. reduce方法 &#x1f4d8; 2. forEach方法 &#x1f4d8; 3. map方法…

浏览器连不上 Flink WebUI 8081 端口

安装 flink-1.17.0 后&#xff0c;start-cluster.sh 启动&#xff0c;发现浏览器连不上 Flink WebUI 的8081端口。 问题排查&#xff1a; command R&#xff0c;输入cmd&#xff0c;检查宿主机能否ping通虚拟机&#xff0c;发现能ping通。 检查是否有flink以外的任务占用8081…