shell 中的sed awk

sed :stream editor

可以对某一行进行操作,由名字可知,其能完成对文件的非交互式的编辑工作。

用法sed [options]{commands}[flags] [file]

options主要有-n代表阻止内存输出到屏幕-f 代表后接命令文件 -e说明可以多点编辑 -i可以直接修改文件内容

commands:

s/pattern/content/将pattern 匹配到的替换为content;
1i content 在第一行前插入一行内容为content
2c content 将第2行替换为content
2 d 删除第2 行
3 p 打印第三行

num文件内容:

12 234 1344
12 223 45
1 324 212 

shell 命令演示

sed -e 's/^/start/' -e 's/$/end/' num # -e可以将多个命令一块编辑在一行中 s代表替换
sed 's/12/[&]/g' num# &可以代表被匹配的字符串 从而可以加上某些字符
sed '1i 123 123 123' num #i是插入一行 表示在第一行前面插入一行123 123 123
sed '3a 123 1231 1123' num #a是append 与i同理
sed '/234/i ni niu a ' num# 可以通过匹配来添加行 这样就在第一行前插入了ni niu a 
sed '2 c niniua' num #c命令是替换行 这样就将第2行替换为niniua
sed '2 d ' num#d命令是删除行 这样就删除了第2行
sed -n '3p' num #打印第3行 
sed -r 's/(.*)/Welcome \1/g' #输入名字之后 打出欢迎 name
#前面我们大致说了 sed 增删改查 等多个操作

sed是按照行处理数据数据,将第一行读入pattern space ,然后用命令处理,完成后被输出到屏幕。再读入下一行重复此过程。

什么是Pattern space 什么是Hold Space

	Pattern space 相当于是加工车间需要进行对原始数据的操作 
	而 Hold Space 是对这些操作之后的数据的存放地点

应用如果我们想倒序按行输出num文件的内容该这样

sed '1!G;h;$!d' num

g :将hold space 的内容复制到 pattern space
G:将hold space 的内容追加到pattern sapce
h:将pattern space 的内容复制到 hold space
H:将pattern space 的内容追加到hold sapce

awk awk 可以说是一门语言。

其中包括BEGIN{} 部分必须要执行的部分{}和END部分。

其中begin 部分 一般是 变量的初始化 end部分是变量最后的输出 中间的{}部分完成主要的工作
begin 部分和END部分不是必须的。
awk 可以按行处理,截取某一列的数据。可以看出awk 做的是预处理 逐行处理 最后处理

	awk '{print $1,$2}' num#打印第一列第二列中间以空格分隔
	awk '{if(NR==2){print $0;}}' num#打印第2行的内容 也可用下一行代码替代
	awk 'NR==2{print $0}' num#打印第2行的内容
	#在中间的逐行处理部分可以有条件判断、流程控制等程序设计语言常用的部分
	awk '$1 == 12' num #每行记录若为12 则输出该记录
	awk 'BEGIN{OFS="-"}{print $1,$2,$3}' num #输出分隔符“-” 如果需要自己指定分隔符使用FS="xx" 或者用-F"xx"
	awk '/34*/' num #3后面可以跟0个或者多个4
	awk '/34+/' num#3后面可以跟1个或者多个4
	awk '/34?/' num#3后面可以跟0个或者1个4
	awk '/34./' num#34后面可以跟任意一个字符但是不能不跟字符
	awk '34{1,2}/' num#3后面可以跟1个或2个4
	awk '34[0-9]/' num#34后面跟一个数字
	#上面就是正则匹配的知识
	

利用awk拆分文件

	awk '{if(NR%2==1){++p;print >p".txt"}else{print >p".txt"}}' num #将文件 按2行一个文件拆为多个文件
	awk  '{if ($3 ~/1344/){print >"1.txt"}else if($3 ~/45/){print >"2.txt"}else{print >"3.txt"}}' num#
	#按照 一定的模式匹配 拆分文件

例子

每个用户的进程占了多少内存

awk  '{if ($3 ~/1344/){print >"1.txt"}else if($3 ~/45/){print >"2.txt"}else{print >"3.txt"}}' num
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值