补充

1.printf '%s\t%s' 字符串 中,\t一定不要加双引号,这一点和在awk中使用的时候有所不同

2.其中%s也可以写成%ns,n可以被用来设置列宽,默认右对齐

#打印输出文件系统的使用情况
[root@localhost ~]# printf '%-30s\t%s\n' $(df -h | awk '{print $1"\t"$(NF-1)}')
文件系统                  	已用%
devtmpfs                     0%
tmpfs                        0%
tmpfs                        3%
/dev/nvme0n1p3               11%
/dev/nvme0n1p1               13%
tmpfs                        0%
或
[root@localhost ~]# df -h | awk '{printf "%-20s\t%s\n",$1,$(NF-1)}'
文件系统                	已用%
devtmpfs            	0%
tmpfs               	0%
tmpfs               	3%
/dev/nvme0n1p3      	11%
/dev/nvme0n1p1      	13%
tmpfs               	0%

3.若想要在包含匹配中调用变量,则需要使用单引号

[root@localhost ~]# awk '$2~/[un]/{print $0}' cut.txt 
1	xqian	83	75	93
2	xsun 	74	96	63
[root@localhost ~]# name=un[root@localhost ~]# awk '$2~/['$name']/{print $0}' cut.txt 
1	xqian	83	75	93
2	xsun 	74	96	63#若使用双引号则没有任何用处
[root@localhost ~]# awk '$2~/["$name"]/{print $0}' cut.txt 
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	63

4.若内存使用率超过15%,则打印红色的内存超标,当前使用率是多少

[root@localhost ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       419Mi       1.2Gi       7.0Mi       455Mi       1.5Gi
Swap:          2.0Gi          0B       2.0Gi
[root@localhost ~]# cat jiance.sh 
#!/bin/bash
mem=$(printf '%.f\n' $(free | awk '/Mem/{print $3/$2*100}'))
[ $mem -gt 15 ] && echo -e "\e[31m内存超标,当前使用率是$mem%\e[0m" 
[root@localhost ~]# bash jiance.sh 
内存超标,当前使用率是22%
[root@localhost ~]# 

5.取总的cpu使用率

[root@localhost ~]# top -n 1 | awk '/%Cpu/{printf "%.f\n",$2+$4}'
3

sed命令

功能:实现非交互式对文件进行选取、替换、删除、新增等操作的命令,即不进入文本对其内容进行修改;主要包括读取、执行和显示三个过程

格式:sed [选项]  '动作'  文件名

选项

  • -n:将经过处理后的数据输出到控制台上;不加-n输入全文+指定行
  • -i:直接修改文件内容;默认下sed不会对文件直接修改,而是在内存中修改并将结果显示在控制台

动作

  • p:打印,输出指定行
  • a:追加,在当前行后追加一行或多行
  • i:插入,在当前行前插入一行或多行
  • d:删除,删除指定的一行或多行
  • c:整行替换,用c后面的字符串替换元数据指定行的数据
  • s:字符替换,用一个字符串替换另外一个字符串,格式“行范围s/旧字符/新字符/g”

数据准备

[root@localhost ~]# cat cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	63

查看

1.显示cut.txt中第三行的信息
[root@localhost ~]# sed '3p' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
1	xqian	83	75	93
2	xsun 	74	96	63[root@localhost ~]# sed -n '3p' cut.txt 
1	xqian	83	75	932.显示第二行到第四行的信息,查看连续的多行
[root@localhost ~]# sed -n '2,4p' cut.txt 
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	633.显示第二行和第四行的信息,查看不连续的多行
[root@localhost ~]# sed -n '2p;4p' cut.txt 
0	xzhao	95	59	78
2	xsun 	74	96	634.查看符合条件的行,支持正则,扩展正则要使用转义符
[root@localhost ~]# sed -n '/a/p' cut.txt 
0	xzhao	95	59	78
1	xqian	83	75	93[root@localhost ~]# sed -n '/[23]\?/p' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	63
[root@localhost ~]# sed -n '/[23]/p' cut.txt 
1	xqian	83	75	93
2	xsun 	74	96	63

追加

1.追加,不加-i不改变元数据
#在指定行后面追加
[root@localhost ~]# sed '3a 12\txli\t80\t90\t100\t' cut.txt
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
12	xli	80	90	100	
2	xsun 	74	96	63
#在指定行前面追加
[root@localhost ~]# sed '3i 12\txli\t80\t90\t100\t' cut.txt
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
12	xli	80	90	100	
1	xqian	83	75	93
2	xsun 	74	96	632.改变元数据
[root@localhost ~]# sed -i '3i 12\txli\t80\t90\t100\t' cut.txt
[root@localhost ~]# cat cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
12	xli	80	90	100	
1	xqian	83	75	93
2	xsun 	74	96	633.-a和-i可以在指定位置追加多行
[root@localhost ~]# sed '3a 100 zhangsan \n200 lisi' cut.txt
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
100 zhangsan 
200 lisi
2	xsun 	74	96	63

删除

1.删除第三行的数据
[root@localhost ~]# sed '3d' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	632.删除第二行到第四行的数据,删除多行数据
[root@localhost ~]# sed '2,4d' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
2	xsun 	74	96	633.删除第二行和第四行的数据
[root@localhost ~]# sed '2d;4d' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
12	xli	80	90	100	
2	xsun 	74	96	634.删除第三行的元数据,加上-i选项才能更改元数据
[root@localhost ~]# sed -i '3d' cut.txt 
[root@localhost ~]# cat cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xqian	83	75	93
2	xsun 	74	96	63

替换

1.将第三行内容整行替换
[root@localhost ~]# sed '3c No such person' cut.txt  
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
No such person
2	xsun 	74	96	632.将第三行中的x替换成xiao
[root@localhost ~]# sed '3s/x/xiao/g' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
1	xiaoqian	83	75	93
2	xsun 	74	96	633.将所有行中的x替换成xiao
[root@localhost ~]# sed 's/x/xiao/g' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xiaozhao	95	59	78
1	xiaoqian	83	75	93
2	xiaosun 	74	96	634.将指定的一行内容替换成空
[root@localhost ~]# sed '3s/[0-9]//g' cut.txt
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78xqian			
2	xsun 	74	96	635.同时替换多行,用;隔开
[root@localhost ~]# sed '3s/^/#/g;4s/[0-9]//g' cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
#1	xqian	83	75	93xsun 			6.加上-i选项更改元数据
[root@localhost ~]# sed -i '3s/^/#/g;4s/[0-9]//g' cut.txt 
[root@localhost ~]# cat cut.txt 
ID	NAME	LINUX	MYSQL	DOCKER
0	xzhao	95	59	78
#1	xqian	83	75	93xsun 			

sed命令练习

问题1:关闭selinux

想要关掉selinux,用sed命令修改配置文件

[root@localhost ~]# sed '22s/disabled/enforcing/' /etc/selinux/config 

问题2:校验整数

接收客户端输入,若是纯整数则打印是整数,否则打印格式不正确

[root@localhost ~]# cat num.sh 
#!/bin/bash
read -p "please enter a num:" num
jq=$(echo $num | sed 's/[0-9]//g')
[ -z "$jq" ] && echo 是整数 || echo 格式不正确[root@localhost ~]# bash num.sh 
please enter a num:123
是整数[root@localhost ~]# bash num.sh 
please enter a num:12d
格式不正确

问题3:修改网卡配置

用sed命令修改网卡配置文件,进行IP地址获取方式的切换

1.读取当前使用的网卡名
[root@localhost ~]# ip add | grep "inet[^6]" | grep -v "127" | awk '{print $NF}'
ens160
2.将较长的配置文件名赋予变量
[root@localhost ~]# interface=`ip add | grep "inet[^6]" | grep -v "127" | awk '{print $NF}'`
[root@localhost ~]# cf="/etc/NetworkManager/system-connections/$interface.nmconnection"
3.查看当前网卡配置,并显示行号
[root@localhost ~]# cat -n $cf1	[connection]2	id=ens1603	uuid=4c163b33-6eca-3917-b856-9bff2df0e9474	type=ethernet5	autoconnect-priority=-9996	interface-name=ens1607	timestamp=17555496048	9	[ethernet]10	11	[ipv4]12	method=manual13	address=192.168.66.66/24,192.168.66.214	dns=202.106.0.2015	16	[ipv6]17	addr-gen-mode=eui6418	method=auto19	20	[proxy]
4.将ip地址改为手动获取(真实实验中需要加-i选项)
[root@localhost ~]# sed '12s/auto/manual/' $cf
5.手动添加ip地址、掩码、网关和dns(真实实验中需要加-i选项)
[root@localhost ~]# sed '12a address=192.168.66.66/24,192.168.66.2\ndns=202.106.0.20' $cf

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

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

相关文章

【混合开发】Android+WebView视频图片播放硬件加速详解

webview视频播放出现白屏、蓝屏、花屏、黑屏等等 但由于布局结构是androidwebviewH5本地视频等。视频播放导致的异常排查起来十分复杂且没有原生的相关日志 于是需要给webview播放视频进行硬件加速,刚开始以为是一件很简单的配置而已。本着无经验从头开始的原则&am…

Allegro-DDR3实战-差分对-等长设置-区域规则

本章内容: 一)Allegro之DDR3设计 (实操干货) 二)规则设置具体步骤 DDR3信号表: (eg:镁光MT41J256M16HA-15E) 数据信号 DQ[15:0] DQS[1:0] DM[1:0] DQ:双向数据总线 DQS:数据选通,用于同步数据传…

七牛云OSS空间复制迁移到另外一个空间

创新新的空间时存储地区必须一致 访问控制必须选择公开 1、下载七牛的同步工具并解压 qshell(http://developer.qiniu.com/docs/v6/tools/qshell.html) 2、解压文件 3、运行cmd登录到七牛账号 qshell account 你的七牛AK 你的七牛SK 你的账号 4、测…

windows中Qwen3‑Coder 与 Claude Code 搭配使用

claude安装命令 npm install -g anthropic-ai/claude-code环境变量配置 set ANTHROPIC_BASE_URLhttps://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy set ANTHROPIC_AUTH_TOKENyour-dashscope-apikey可能还需要配置自己的git环境变量 查看git安装位置 按下Win S打…

thunar 文件管理器实现双击使用 nvim打开

archlinux 中thunar 文件管理器,如何实现双击使用 nvim打开查看。我用的是kitty 终端。 在 Arch Linux Thunar kitty nvim 的环境里,要实现 双击文件 -> 用 nvim 打开,你可以这样配置:设置为默认应用 如果你想 双击直接用 n…

深度学习----卷积神经网络实现数字识别

一、准备工作 导入库,导入数据集,划分训练批次数量,规定训练硬件(这部分 import torch from torch import nn # 导入神经网络模块 from torch.utils.data import DataLoader # 数据包管理工具,打包数据 from torch…

鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(四)

目录 一,查询表的所有数据 二,根据条件查询数据 三,数据库升级 前面章节已经讲解了数据库的创建,表的创建,已经增删改等操作。下面我们来讲解一下数据库的查询以及升级操作。 一,查询表的所有数据 先来看看官方文档: query(predicates: RdbPredicates, callback: Asy…

20250829_编写10.1.11.213MySQL8.0异地备份传输脚本+在服务器上创建cron任务+测试成功

0.已知前提条件: 10.1.11.213 堡垒机访问 mysql 8.0 版本 密码在/root/.my.cnf 备份脚本:/data/backup_mysql/mysql_backup.sh alarm_system:动环数据库 exit_and_entry:出入境数据库 logs:备份日志 project_cg_view_prod:采购跟踪系统 all :数据库整体备份 imip_ecb…

PostgreSQL 流复制与逻辑复制性能优化与故障切换实战经验分享

PostgreSQL 流复制与逻辑复制性能优化与故障切换实战经验分享 在高可用和数据安全愈发受到重视的生产环境中,PostgreSQL 复制技术是保障业务连续性的重要手段。本文结合真实生产场景,分享流复制(Physical Replication)与逻辑复制&…

Django开发规范:构建可维护的AWS资源管理应用

引言 在现代Web开发中,遵循一致的开发规范对于项目的可维护性和团队协作至关重要。本文基于实际的AWS资源管理项目,分享一套经过实践检验的Django开发规范,涵盖模型设计、Admin配置、管理命令和工具类开发等方面。 模型开发规范 数据模型设计原则 良好的数据模型设计是应…

机器学习可解释库Shapash的快速使用教程(五)

文章目录1 快速使用1.1 安装1.2 三个简单步骤快速入门1.2.1 步骤 1:准备模型和数据1.2.2 步骤 2:声明并编译 SmartExplainer1.2.3 步骤 3:可视化和探索1.2.4 启动 Web 应用1.2.5 将解释结果导出为数据2 Shapash的后端集成2.1 方法一&#xff…

如何在emacs中添加imenu插件

在配置文件中添加: ;; 删除现有的包管理器配置(如果有),然后添加以下:;; 初始化包管理器 (require package);; 清除现有的仓库列表 (setq package-archives nil);; 添加正确的仓库(注意:使用 H…

Linux下的网络编程SQLITE3详解

常用数据库关系型数据库将复杂的数据结构简化为二维表格形式大型:Oracle、DB2中型:MySql、SQLServer小型:Sqlite非关系型数据库以键值对存储,且结构不固定JSONRedisMongoDBsqlite数据库特点开源免费,C语言开发代码量少…

适配openai

openai 脚本 stream脚本import os from openai import OpenAIclient OpenAI(base_url"http://127.0.0.1:9117/api/v1",api_keyos.environ["ACCESS_TOKEN"], )stream client.chat.completions.create(model "Qwen/Qwen2-7B-Instruct",messages…

一天认识一个神经网络之--CNN卷积神经网络

CNN 是一种非常强大的深度学习模型,尤其擅长处理像图片这样的网格结构数据。你可以把它想象成一个系统,它能像我们的大脑一样,自动从图片中学习并识别出各种特征,比如边缘、角落、纹理,甚至是更复杂的物体部分&#xf…

13 SQL进阶-InnoDB引擎(8.23)

一、逻辑存储结构(1)表空间(ibd文件):一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。cd /var/lib/mysql(2)段,分为数据段(leaf node segment&a…

MTK Linux DRM分析(二十四)- MTK mtk_drm_plane.c

一、代码分析 mtk_drm_plane.h 和 mtk_drm_plane.c 两个文件,并生成基于文本的函数调用图,我将首先解析文件中的主要函数及其功能,然后根据代码中的调用关系整理出调用图。由于文件内容较长,我会专注于关键函数及其相互调用关系,并以清晰的文本形式呈现。 文件分析 1. …

滚珠导轨如何赋能精密制造?

在智能制造发展的趋势下,新兴行业对高精度、高稳定性的运动控制需求激增。作为直线传动领域的“精密纽带”,滚珠导轨凭借低摩擦、长寿命、高刚性优势,广泛应用于精密传动领域,成为产业升级的关键。新能源汽车制造领域:…

医疗 AI 的 “破圈” 时刻:辅助诊断、药物研发、慢病管理,哪些场景已落地见效?

一、引言在科技迅猛发展的当下,医疗领域正经历着深刻变革,人工智能(AI)技术宛如一颗璀璨新星,强势 “破圈” 闯入,为医疗行业带来了前所未有的机遇与活力。从辅助医生精准诊断病情,到助力药企高…

【项目思维】编程思维学习路线(推荐)

本篇博客是一份系统性、分阶段的 编程思维学习路线图推荐,从零基础小白到系统架构级别,帮助你全面建立和提升编程思维能力。 🚦 阶段 0:思维准备(理解编程是什么) 🎯 学习目标: 理…