linux中awk,sed, grep使用

news2024/10/6 12:27:35

《linux私房菜》这本书中将sed和awk一同归为行的修改这一点,虽然对,但不利于实际处理问题时的思考。因为这样的话,当我们实际处理问题时,遇到比如说统计文本打印内容时,我们选择sed还是awk进行处理呢?
也因此

grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

这样的思路更便于我们处理问题时的思路。
比如我们的变量应用文本,需要根据环境进行编辑时,这时候使用sed来编辑脚本便是我们第一时间能想到的了。

awk

awk命令正如上面所说,可以格式化文本
体现就在于它的分隔符上,默认是空格。
修改方式有两种

awk -F":" aa.txt
awk '{FS=":"}' aa.txt

第二种会导致第一行不适用,需要在BEGIN中编写,因此直接用第一种。

awk根据分隔符可以将行内容分为多段,每段按照从左到右的顺序,用$1,$2, $3…来输出。$0输出整行。

基础使用可以输出指定列

比如说这个问题
在这里插入图片描述
计算内存和。

a=0
b=$(cat nowcoder.txt|sed '1d'|awk -F" " '{print $4}')
echo $b
for i in $b
    do
        a=$(echo "$a+$i"|bc)
    done
echo $a

此外awk的内容是可以包含三部分的,除了必须的逐行处理的内容,还可以包含BEGIN和END的内容。BEGIN表示逐行处理前,END表示逐行处理结束后。

也即如下

awk 'BEGIN{FS=":"} {print $3} END{print "aaa"}' aaa.txt  

aaa.txt如下

a:b:c

输出如下
在这里插入图片描述
END可以获取到在逐行处理中的变量,下面有示例可以看到。

awk功能光如此也不足道,强的地方还在于它的逻辑处理。
我们可以在文本内部写java语法的循环判断,而不用遵守shell的循环判断语法格式

如下面这个问题,
在这里插入图片描述

awk '{num[$2] += 1} END{for(a in num) if(num[a] >= 2) print num[a] a}' nowcoder.txt|sort -n 
#除了内部循环以外也使用了一维数组。shell中变量在赋值时就会完成初始化,这种东西见仁见智吧,我不觉得有啥好用的。

shell的变量没有定义都是字符串,自然数组的指针也能是字符串。

可以看到,awk确实可以进行相对复杂的格式化处理。

又因为shell中数组指针是字符串,我们可以用此来定义多维数组,如何理解?也就是说我们可以定义一个类似于这样的数组

num[1,2]=xxxxx
num[1,3]=yyyyy

其中的"1,2"就是这个指针的字符串。
当我们想取时可以用循环遍历来取。
上面说的这些都是在awk块内部建立的,其余地方使用会报错的

你可能会想行数和列数怎么确定呢,事实上不存在给你一个已生成的数组,数组的初始化一般都是你自己建立的。所以行数和列数你是已知的。实在不知道,那就只能for a in 数组来遍历打印看看了。

如下面这个问题用到了二维数组

在这里插入图片描述
使用二维数组编写如下

awk '{for(i=1;i<=NF;i++){num[NR,i]=$i}} END{for(j=1;j<=(i-1);j++) {
    for(k=1;k<=NR;k++){
        printf num[k,j]"\t"
    }
    printf "\n"
}}' nowcoder.txt

END代码块中,NR最后保存为行数, i-1为列数。

awk使用能熟练到这个程度就差不多够了。

sed

grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

还是这个思路,那么当我们遇到单纯编辑文本时,就可以直接考虑用sed

sed命令还是很强大的,
在我工作过程中,关于nginx配置文件的编辑,环境变量配置文件根据环境进行的修改来写脚本文件时,都会用到这个命令。

sed简单使用时,可以在指定的行下添加新行,删除该行,根据正则替换行内匹配到的内容。

如下面这个问题。
在这里插入图片描述

sed '/^.*[bB].*$/d' nowcoder.txt

sed使用并不复杂,因此用来处理的问题也不算复杂,但是该用的时候还是很好用的。
上面是匹配到对应行就删除该行,格式为

sed '/正则/d' 文件名

另一个比较常用的是替换
格式为

sed 's/正则/替换的内容/g' 文件名

没找到相关例题,但是我们可以举个实际场景,某个应用的开放端口发生了改动(比如说增加了ssl访问端口)或者访问上下文发生了改动,此时线上环境还是用的旧的端口号,旧的上下文,那么我们更新版本的时候就需要脚本去改变我们nginx转发时候访问的端口号。那么改动端口号的时候我们就会用到sed。

sed -i 's/localhost:8080/localhost:8081/g' nginx.conf  #-i表示不输出到界面直接修改源文件

界定符也不一定是‘/’,也可以是’@‘,’#'.可以用来解决替换内容内部含有‘/’的情况。

grep

grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

因此按这个思路,grep应该是运维最常用到的命令了,无论是检查当前服务器是否开启某个端口,还是搜索报错日志具体ERROR信息时这些十分常见的场景都是会用到的。

比如在应用日志中搜索error级别的日志信息

cat 日志文件 |grep -i error #-i参数不区分大小写

如果更具体需要用到正则,,比如搜索以ERROR开头日志则只需如此使用

cat 日志文件 |grep -i '^error'

除了-i之外常用的参数有

-v 显示不含有该搜索字段的行
-c 代替显示行信息,显示含有该搜索信息的行数
-n 显示行号

grep简单实用,也因此常用到。

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

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

相关文章

论文解读——掌纹生成网络 RPG-Palm

论文&#xff1a;RPG-Palm: Realistic Pseudo-data Generation for Palmprint Recognition&#xff08;2023.7&#xff09; 作者&#xff1a;Lei Shen, Jianlong Jin, Ruixin Zhang, Huaen Li, Kai Zhao, Yingyi Zhang, Jingyun Zhang, Shouhong Ding, Yang Zhao, Wei Jia 链接…

React、JSX简介、渲染列表、基础和复杂的条件渲染

目录 一、简介 1、搭建环境 2、回到项目&#xff08;VScode&#xff09; 3、项目核心渲染路径 4、网站资料&#xff08;启动项目的方法&#xff09; 二、JSX 三、实现渲染列表 四、实现条件渲染 五、实现复杂条件渲染 一、简介 1、搭建环境 npx creat-react-app reac…

视图库对接系列(GA-T 1400)七、视图库对接系列(本级)校时

校时 1400文档中的定义 在我做的项目中, 一般情况下用的比较少, 我目前的这个设备型号也不支持这个接口, 对接下级视图库平台的时候,其他平台对这个接口也不怎么使用。我理解的话 大概率是用于平台之间的校时或者验证二个服务器之间的时间使用的。 目前该接口我没有实现…

2024亚太赛(中文赛)数学建模竞赛选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;B<C<A&#xff0c;开放度&#xff1a;C<A<B。 综合评价来看 A题适合有较强计算几何和优化能力的团队&#xff0c;难度较高&#xff0c;但适用面较窄。 B题数据处理和分析为主&#xff0c;适合数据科学背景的团队…

IT服务管理的最佳实践:光大银行案例分析

IT服务管理的最佳实践&#xff1a;光大银行案例分析 在信息技术日益发展的今天&#xff0c;IT运维已成为企业不可或缺的一部分。为了确保系统的稳定运行和业务的连续性&#xff0c;智能化运维实践中的IT健康管理显得尤为重要。本文将结合最新的互联网技术&#xff0c;探讨智能化…

MATLAB贝叶斯线性回归模型案例

采用辛烷值数据集“spectra_data.mat”(任意数据集均可),介绍贝叶斯线性回归模型的构建和使用流程。 运行结果如下: 训练集预测精度指标如下: 训练集数据的R2为: 1 训练集数据的MAE为: 0.00067884 训练集数据的RMSE为: 0.00088939 测试集预测精度指标如下: 测试集数据的R2…

7.基于SpringBoot的SSMP整合案例-表现层开发

目录 1.基于Restfu1进行表现层接口开发 1.1创建功能类 1.2基于Restful制作表现层接口 2.接收参数 2使用Apifox测试表现层接口功能 保存接口&#xff1a; 分页接口&#xff1a; 3.表现层一致性处理 3.1先创建一个工具类&#xff0c;用作后端返回格式统一类&#xff1a;…

tampermonkey插件下载国家标准文件

#创作灵感# 最近在一个系统招标正文中看到了一些国家标准&#xff0c;想要把文章下载下来&#xff0c;方便查阅&#xff0c;但是“国家标准全文公开系统”网站只提供了在线预览功能&#xff0c;没有提供下载功能&#xff0c;但是公司又需要文件&#xff0c;在网上找了一些办法&…

Vue2-Vue Router前端路由实现思路

1.路由是什么&#xff1f; Router路由器&#xff1a;数据包转发设备&#xff0c;路由器通过转发数据包&#xff08;数据分组&#xff09;来实现网络互连 Route路由&#xff1a;数据分组从源到目的地时&#xff0c;决定端到端路径的网络范围的进程 | - 网络层 Distribute分发…

Linux:网络配置命令

目录 一、查看网络接口信息 ifconfig 二、修改网络配置文件 三、设置网络接口参数 ifconfig 四、查看主机名称 hostname 五、查看路由表条目route 5.1、查看路由 5.2、添加、删除静态路由条目 5.3、添加、删除默认网关记录 六、netstat命令 七、ss 命令 八、测试网络…

EtherCAT通讯介绍

一、EtherCAT简介 EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;是一种实时以太网技术&#xff0c;是由德国公司Beckhoff Automation在2003年首次推出的。它是一种开放的工业以太网标准&#xff0c;被设计用于满足工业自动化应用中的高性能和低…

JAVA数字化产科管理平台源码:涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全流程的信息化管理

JAVA数字化产科管理平台源码&#xff1a;涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全流程的信息化管理 智慧产科管理系统是基于自主研发妇幼信息平台&#xff0c;为医院产科量身打造的信息管理系统&#xff0c;涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全…

CSS 背景效果

目录 一、CSS背景属性 二、准备工作 三、background-color 四、background-image 五、background-repeat 六、background-position 七、background-size 八、background-attachment 九、background-clip 十、background-origin 十一、background 一、CSS背景属性 在…

【刷题汇总--Fibonacci数列、单词搜索、杨辉三角】

C日常刷题积累 今日刷题汇总 - day0041、Fibonacci数列1.1、题目1.2、思路1.3、程序实现 2、单词搜索2.1、题目2.2、思路2.3、程序实现 3、杨辉三角3.1、题目3.2、思路3.3、程序实现 - 蛮力法3.4、程序实现 - vector3.5、程序实现 - dp 4、题目链接 今日刷题汇总 - day004 1、…

使用 pyecharts 渲染成图片程序报错: echarts is not defined问题处理

背景 之前写的使用 snapshot_selenium 来保存pyeacharts渲染成的网页截图&#xff0c;可以正常运行。程序搁置了半年&#xff0c;不知道动了电脑哪里&#xff0c;再次运行程序时&#xff0c;程序开始报错&#xff1a;JavascriptException: javascript error: echarts is not d…

EDUSRC-我与xx职院的爱恨情仇(教育漏洞挖掘)

一、人生中的第一个漏洞 2024.1月的时候&#xff0c;当时看朋友挖到了一个名校的漏洞&#xff0c;特别羡慕&#xff0c;我也想挖&#xff0c;但是当时什么都不会&#xff0c;就只好在网上搜edusrc挖掘思路、edusrc挖掘教程等等&#xff0c;边学边挖&#xff0c;边挖边学。 一开…

揭秘Stable Diffusion做AI绘图赚钱秘诀:从零开始月入过万

1. 概述 随着人工智能技术的飞速发展&#xff0c;AI绘图已经成为一个热门话题。AI绘图不仅在艺术创作中展现了巨大的潜力&#xff0c;还为个人和企业提供了多种赚钱的机会。本文将详细介绍几种通过AI绘图赚钱的方法&#xff0c;帮助你在这个新兴领域中找到适合自己的盈利途径。…

苹果公司的Wifi定位服务(WPS)存在被滥用的风险

安全博客 Krebs on Security 2024年5月21日发布博文&#xff0c;表示苹果公司的定位服务存在被滥用风险&#xff0c;通过 "窃取"WPS 数据库&#xff0c;可以定位部队行踪。 相关背景知识 手机定位固然主要依赖卫星定位&#xff0c;不过在城市地区&#xff0c;密集的…

为什么要卸载手机上面的抖音?

删除抖音等社交媒体应用可能出于多种原因&#xff0c;这里列举一些常见的考虑因素&#xff1a; 1. **时间管理**&#xff1a; 抖音和其他社交媒体平台可能会占用大量时间&#xff0c;影响个人的日常生活和工作学习效率。 这个对于自己而言是一个客观存在的事情&#xff1a; 2.…

恭喜!H医生一个月内荣获美国芝加哥大学访问学者邀请函

➡️【院校背景】 芝加哥大学&#xff08;英文&#xff1a;The University of Chicago&#xff0c;简称UChicago、“芝大”&#xff09;由石油大王约翰洛克菲勒于1890年创办&#xff0c;坐落于美国伊利诺伊州芝加哥市&#xff0c;一所私立研究型大学&#xff0c;属于全球大学校…