linux du -sh 脚本,Linux之shell脚本(2)

Linux之shell脚本(2)

一、printf命令:

printf是一个把从标准输入的字符按照你所要求的格式输出到标准输出即屏幕的命令.在很多时候,我们可能需要将自己的数据给他格式化输出的。

1.格式化输出。(print  format)

2.命令格式:printf'打印格式'实际内容

3.打印格式:

1)\a(警告声音输出)

03d44a9620cd34cfdc1a53e65792bd78.png

2)\b(退格键)

4bce885f0ead9709c10cbabdf2d07098.png

3)\f(清除屏幕,类似换纸)

f0a1273f68466fc93e2f743218852da3.png

4)\n(输出新的一行)

e1b834a94afdc79b16c190901e121f64.png

5)\r(帧处于行的开始,即enter键)

7e01fe6a18a939c066e69bca0bc3d409.png

6)\t(水平的table键)

6759d88bba8a2d1b1a53b81f055c0243.png

7)\v(垂直的table键)

6b1a354d1c24132b8a9efa1efcaa3032.png

8)\xNN(x为ASCII码十六进制表示;NN为俩位数数字;可转换数字成为字符)

f80a7f89dc97d817e632064e910a5617.png

9)%ns(n为数字;s代表string,即多少个字符)

81c9fba72481d712a2cb0fbe4c0c454c.png

10)%ni(n为数字;i代表integer,即多少整数字符)

20363a2487941b590fe10f6cb293c9e2.png

11)%N.nf(n、N为数字;f代表floating浮点,小数字数即小数点)

6a5603082f4ff8200d7e2a1449c62bbc.png

案例:

1)以整数形式输出23并换行,以字符串形式输出hello并换行

d0c016626553ba859c72a0b0914828b3.png

2)以2位整数形式输出23并换行,以7位字符串形式输出hello并换行

fe557c2d95541995b47ca88046abc6f5.png

案例文本:

考试分数的输出:假设有一个文件test.txt记录着考试分数,内容如下图所示:

dad8fe5ef22d4df2776d1143a53fb7eb.png

3)如下图所示,printf命令的输出结果并没有对齐,%s代表一个不固定长度的字符串,而字符串与字符串中间就以\t这个[tab]分隔符来处理。既然每个字段的长度不固定会造成上述的困扰,那我将每个字段固定就好啦。

517d1139c264d330cbe2793d83706a58.png

将test.txt文件中的内容,分别以字符串、整数、小数点来显示:

2f6c0485344c47af146ffa5f81334840.png

上面的格式共分为五个字段,%10s代表的是一个长度为10个字符的字符串字段,%5i代表的是长度为5个字符的数字字段,至于那个%8.2f则代表长度为8个字符的具有小数点的字段,其中小数点有两个字符宽度;全部的宽度仅有8个字符,整数部分占有5个字符,小数点本身(.)占一位,小数点后的位数则有两位。

二、awk命令:

awk也是一个数据处理工具!相较于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理。

.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。

有三种方式调用awk

1)命令行方式

awk   [-F  field-separator]  'commands'input-files

其中,[-F域分隔符]是可选的,因为awk使用空格或tab键作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明-F选项,如:awk -F: 'commands' input-file。

注:在linux系统中用环境变量IFS存储分隔符,但根据实际应用也可以改变IFS的值.

例如:查看默认分隔符。

c03fe8b660f937c5b444840102e64822.png

注意:oldIFS=$IFS(把环境变量IFS存到oldIFS)

78b58985e75b11d59b231fc86972fbfc.png

IFS=","(定义分隔符为,)

2)shel脚本方式

将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用。

相当于shell脚本首行的:#!/bin/sh可以换成:#!/bin/awk

16eb6a0a3099ce7a12b91ef0266e54bb.png

3)将所有的awk命令插入一个单独文件,然后调用:

Awk-fawk-script-fileinput-files

其中,-f选项加载awk-script-file中的awk脚本,input-files跟上面的是一样的。

awk的模式和动作

任何awk语句都由模式和动作组成(awk_pattern { actions })。在一个awk脚本中可能有许多语句。

模式部分决定动作语句何时触发及触发事件。处理即对数据进行的操作。如果省略模式部分,动作将时刻保持执行状态。即省略时不对输入记录进行匹配比较就执行相应的actions。

模式可以是任何条件语句或正则表达式等。awk_pattern可以是以下几种类型:

①正则表达式(/regexp/)

2698d02797141eef1917ec9245d79065.png

②布尔表达式用作awk_pattern,表达式成立时,触发相应的actions执行。

(1)表达式中可以使用变量(如字段变量$1,$2等)和/regexp/

(2)布尔表达式中的操作符:

关系操作符:< > <= >= == !=匹配操作符: value ~ /regexp/ 如果value匹配/regexp/,则返回真value !~ /regexp/ 如果value不匹配/regexp/,则返回真

(3)&&(与)和||(或)可以连接两个/regexp/或者布尔表达式,构成混合表达式。!(非)可以用于布尔表达式或者/regexp/之前。

例如:提取test.txt中chinese大于75为优秀。

cb85fd5ba1a34f83c29d9f5064e98a9e.png

例如:提取passwd中匹配d开头的显示ok。

6ed7f037e639dcc04510e70260ae8ac7.png

例如:模式包括两个特殊字段BEGIN和END。使用BEGIN语句设置计数和打印头。BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文本开始执行。END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志。

c33a57a664c9cf54c8a4ec665887e467.png

动作:

实际动作在大括号{}内指明。动作大多数用来打印,但是还有些更长的代码诸如i f和循环语句及循环退出结构。如果不指明采取动作,awk将打印出所有浏览出来的记录。

awk执行时,其浏览域标记为$1,$2...$n。这种方法称为域标识。使用这些域标识将更容易对域进行进一步处理。

使用$1 , $3表示参照第1和第3域,注意这里用逗号做域分隔。如果希望打印一个有5个域的记录的所有域,不必指明$1 , $2 , $3 , $4 , $5,可使用$0,意即所有域。为打印一个域或所有域,使用print命令。这是一个awk动作

awk的运行过程:

①如果BEGIN 区块存在,awk执行它指定的actions。

②awk从输入文件中读取一行,称为一条输入记录。(如果输入文件省略,将从标准输入读取)

③awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。

④把当前输入记录依次与每一个awk_cmd中awk_pattern比较,看是否匹配,如果相匹配,就执行对应的actions。如果不匹配,就跳过对应的actions,直到比较完所有的awk_cmd。

⑤当一条输入记录比较了所有的awk_cmd后,awk读取输入的下一行,继续重复步骤③和④,这个过程一直持续,直到awk读取到文件尾。

⑥当awk读完所有的输入行后,如果存在END,就执行相应的actions。

awk入门实例:

例1:显示/etc/passwd文件中用户名和登录shell

e293b91b6c8fa5b5f2d23637712b3a5f.png

例2:显示/etc/passwd文件中用户名和登录shell,中间以tab分隔

4b05d0b90f6ed020650344f3ba60292c.png

例3:显示/etc/passwd文件中用户名和登录shell,中间以逗号分隔

1aa6ee6552e1f706ae38ed340786f2fd.png

例4:显示/etc/passwd文件中UID大于500的所有用户的用户名和登录shell

03546c001700595eb2b31a97ab7bd36c.png

例5:显示/etc/passwd文件中的UID大于500的用户名和登录shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。

aa6dd0e6801c0c9eaf21bc2a7da6b7b8.png

注意:

1.awk后面接两个单引号并加上大括号{}来设定想要对数据进行的处理动作

2.awk工作流程是这样的:先执行BEGING,然后读取文件,读入有\n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

六、函数及脚本的综合应用

1、shell函数:shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。

函数由两部分组成:函数标题、函数体。

标题是函数名。函数体是函数内的命令集合。

标题名应该唯一;如果不是,将会混淆结果,因为脚本在查看调用脚本前将首先搜索函数调用相应的shell。

2、定义函数的格式为:

函数名(){

命令1

...

}

如果愿意,可在函数名前加上关键字function,这取决于使用者。

function函数名()

{

命令1

...

}

例如:

3d92a38d6b7bbabcb524632443637bcf.png

脚本案例:

案例一、删除文件中的空行:

这个脚本(脚本名为del.lines)可以处理一个或多个文件。每个文件在用sed删除空行之前要先核实是否存在。

sed的输出被导入一个文件名中含有$ $的临时文件,最后这个临时文件又被移回到原来的文件中。

该脚本使用shift命令取得所有的文件名,用while循环逐个处理所有的文件,直至处理完

为止。可以使用del.lines --help获得一个简短的帮助

b012ec178b4322ca6d612b7397bab977.png

chmod  +x  del.lines,增加执行权限,

测试如下:

a07098f4659ac0e8ec6e203e502a9333.png

注:

1、basename命令能够从路径中分离出文件名。通常用于shell脚本中

2、shift语句用于迁移位置变量,将 $1~$9 依次向左传递

例如,若当前脚本程序获得的位置变量如下:

$1=file1、$2=file2、$3=file3、$4=file4

则执行一次shift命令后,各位置变量为:

$1=file2、$2=file3、$3=file4

再次执行shift命令后,各位置变量为:

$1=file3、$2=file4

案例二、日志文件超过长度,备份,清除内容:

437d633cb21d0dff2fdfb778c88eba34.png

脚本内容

cada279335c99e02b5ebb18a708e151b.png

注:du 并不是显示文件的实际大小,而是显示文件所占用的block大小,默认linux系统分区的block size是4k,也就是说即使文件只有1个字节,也会占用4k.ls -l则是文件的实际大小。

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

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

相关文章

python异常值删除_python数据清洗中,是如何识别和处理异常值的?

异常值处理是pythonshujuqingxi/ stylecolor:#000;font-size:14px;>python数据清洗中重要的步骤&#xff0c;虽然异常值出现频率比较低&#xff0c;但是如果置之不理的话&#xff0c;还是会对实际项目的分析造成偏差&#xff0c;所以今天小编就跟大家分享pythonshujuqingxi/…

啊哈c语言答案1.3,啊哈C语言编程-第2课-让计算机开口说话

为什么会有计算机的出现呢&#xff1f;我们伟大的人类&#xff0c;发明的每一样东西都是为了帮助我们改善生活。计算机同样是用来帮助我们的工具。想一想&#xff0c;假如你现在希望让计算机帮助你做一件事情&#xff0c;你首先需要做什么&#xff1f;是不是要先与计算机进行沟…

用html5做一个简单网页_用新款ws2812灯带做一个简单的窗花

本文转自&#xff1a;DF创客社区-未经许可不可转载原文链接&#xff08;附件请于原文下方下载&#xff09;&#xff1a;用新款ws2812灯带做一个简单的窗花-创意生活论坛-DF创客社区​mc.dfrobot.com.cn作者&#xff1a;屌丝王小明很高兴提前拿到了DF即将上架的新品——ws2812灯…

c语言锁屏密码程序,求一个VB锁屏程序的源文件

满意答案nan67182014.07.08采纳率&#xff1a;53% 等级&#xff1a;12已帮助&#xff1a;8369人我原来写的一个缩屏的程序&#xff0c;后来没用&#xff0c;当时只是为了测试透明窗体的.代码给你参考下。功能差一个禁用任务管理器的功能Private Declare Function GetWindowL…

抗侧力构件弹性位移如何计算_说一说现在很火的装配式建筑怎么计算?

装配整体式剪力墙结构体系&#xff0c;其主要预制构件包括承重墙(预制剪力墙)、非承重墙(外填充墙、内隔墙等)、预制楼梯(预制楼梯梯段&#xff0c;端部伸出连接钢筋&#xff0c;伸入叠合平台板&#xff0c;通过叠合现浇形成整体楼梯)、预制阳台板(根据建筑要求&#xff0c;整体…

微软私有云解决方案_微软发布电信云平台 ,互联网巨头争夺5G网络商机

微软发布电信云平台 &#xff0c;互联网巨头争夺5G网络商机微软公司周一发布了全新的云平台&#xff0c;能够帮助电信运营商更快地构建5G网络&#xff0c;降低成本并向企业客户出售定制服务。这一5G的新平台将在微软云Azure上运行&#xff0c;微软表示使用该平台将降低基础架构…

fanuc机器人编程手册_是谁需要G代码编程机器人?

用G代码编程机器人是一个5&#xff0c;6年前就碰到过的一个概念。当时就有点困惑&#xff0c;不过没有细究为何提出这样的想法。这个问题一直搁置很久也没有想起来主动去了解&#xff0c;去和同行去交流。今天在翻阅西门子自动化产品手册时&#xff0c;看到SINUMERIK产品介绍后…

java各个平台订单动态对接_平台订单丨全国各地最新采购、代加工订单,免费联系对接...

寻求&#xff1a;地铁闸机加工件定制加工需要两种闸机&#xff0c;一种扇门&#xff0c;一种旋转扇门&#xff0c;两必须都按照图纸加工&#xff0c;请仔细审核图纸&#xff0c;欢迎有实力的友商前来洽谈&#xff0c;不符勿扰&#xff0c;谢谢&#xff01;求购&#xff1a;镀锌…

零基础入门c语言免费教程,C语言零基础急速入门免费教程不定期更新

很多粉丝问我陈老师为什么你会教c语言和java语言&#xff1f;因为名字中”陈“字的汉语拼音中“chen””陈“&#xff0c;和“c”语言是同一个首字母“c”&#xff0c;所以我教“c”语言。又因为同学、学生、粉丝、朋友、同事、亲人们叫我杰哥&#xff0c;汉语拼音中的”jie“&…

python单词什么意思_“逐字逐句”是什么意思?语法在Python中意味着什么?

I see the following script snippet from the gensim tutorial page. Whats the syntax of word for word in below Python script? >> texts [[word for word in document.lower().split() if word not in stoplist] >> for document in documents] 解决方案 T…

平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线

平时经常会说去测个BET&#xff0c;看看材料比表面积多大&#xff0c;孔径分布如何&#xff0c;其实我们测试的并不是BET&#xff0c;而是氮气等温吸脱附曲线&#xff0c;测试得到的数据是氮气等温吸脱附曲线&#xff0c;比表面积、孔径分布都是通过公式计算得到的。所以本文旨…

python整数类型在每一台计算机上的取值范围是一样的_人工智能第一章:Python语言基础...

1 Python简介 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 1.1 起源 Python的作者是著名的…

android震动服务能设置时长么,Android实现手机振动设置的方法

本文实例讲述了Android实现手机振动设置的方法。分享给大家供大家参考。具体如下&#xff1a;main.xml布局文件&#xff1a;android:orientation"vertical" android:layout_width"fill_parent"android:layout_height"fill_parent">android:la…

请概述可视化卷积神经网络的中间输出的基本思想。_最详细的卷积神经网络入门指南!...

编辑&#xff1a;murufengDate&#xff1a;2020-05-15来源&#xff1a;深度学习技术前沿微信公众号链接&#xff1a;干货|最全面的卷积神经网络入门教程卷积神经网络简介卷积网络 (convolutional network)(LeCun, 1989)&#xff0c;也叫做卷积神经网络 (convolutional neural n…

python指定位置写入文件_Python从文件中读取指定的行以及在文件指定位置写入

Python从文件中读取指定的行以及在文件指定位置写入 Python从文件中读取指定的行 如果想根据给出的行号&#xff0c; 从文本文件中读取一行数据&#xff0c; Python标准库linecache模块非常适合这个任务: 测试文件内容 &#xff1a; This is line 1. This is line 2. This is l…

华硕 x86 android,【华硕X79评测】学不会不收费 几步教你安装Android x86-中关村在线...

安装Android x86其实并不困难【中关村在线】华硕X79评测&#xff1a; 话说最近操作系统这个话题非常火爆。也许是借助于Windows 8消费者预览版的光芒&#xff0c;凡是与系统搭边的东西大家好像都喜欢与Windows 8进行比较。介于现在可以使用的系统众多&#xff0c;其中Android x…

springboot用户管理系统_Springboot优秀开源项目

前言 作为一个开发人员来说,快速的熟悉一项技术就是去使用它.伟大的作家鲁迅先生曾说过:看别人视频不如自己敲代码!作为一个菜鸡开发,我平时也致力于收集各种大神的开源项目!接下来就给大家带来我绞尽乳汁为大家搜罗的几个开源的好项目吧!1. 基于springboot Vue 的人事管理系统…

第一次失效_又到审核季,内审员们,咱如何开好第一次会议?

导读作为一名企业的内审员&#xff0c;展开工作将从第一次会议开始&#xff0c;那么如何组织好第一次会议将是十分关键的&#xff0c;今天小编特地跟大家一起分享下首次会议召开的案例&#xff0c;手把手教你怎么成功召开首次会议&#xff1a;首次会议由审核组长主持。01 签到与…

疯狂动物消消乐html5游戏在线玩,疯狂动物消消乐免费

疯狂动物消消乐免费版这是一个移动端休闲益智手游&#xff0c;疯狂动物消消乐免费版主打消除了玩法&#xff0c;在疯狂动物消消乐免费版游戏当中玩家要经过种种形式移动游戏当中元素来到达相同种类消除了成功的目的。游戏介绍疯狂动物消消乐一款休闲类的消除游戏&#xff0c;全…

windows便签快捷键_win10电脑有哪些常用的快捷键?

十年八年都不怎么用的快捷键这里就不讲啦&#xff0c;全是常用的&#xff0c;而且用熟了之后你的电脑水平就会变高&#xff0c;至少别人看来是这样的啦♪(^∇^*)。windows键P键&#xff1a;打开小娜&#xff0c;可搜问题&#xff0c;可聊天&#xff0c;可语音调戏。小娜windows…