当前位置: 首页 > news >正文

linux系统学习(11、shell编程)

目录

一、正则表达式

(1)基本的正则表达式

(2)使用方法

二、字符串截取命令

1.cut命令

(1)概述

(2)示例

2.printf命令

(1)概述

(2)示例

3.awk命令

(1)概述

(2)示例

(3)BEGIN

(4)FS内置变量

(5)END

(6)关系运算符

4.sed

(1)概述

(2)常见用法

Ⅰ:打印指定行

Ⅱ:删除指定行数据

Ⅲ:追加

Ⅳ:替换

三、字符串处理命令

1.sort

(1)sort直接排序,对每行排序,按照字母表顺序a-z

(2)sort -r  按照字母表反向排序z-a

(3)指定分隔符,按照行内的某些元素排序

(4)指定为数值类型 -n

2.wc

(1)基本概念

(2)实操

四#条件判断

1.按照文件类型进行判断

2# 按照文件权限进行判断

3.两个文件之间进行比较

4.两个整数进行比较

5.字符串的判断

6.多重条件判断

五.流程控制语句

1.if语句

(1).单支if条件语句

(2)双分支if语句

(3)多分支if语句

2.case语句

3.for循环

(1)语法1

​编辑

(2)语法2

​编辑

4.while循环和until循环

(1)while循环

(2)until循环


下面的所有处理都是以行为单位的,无论是正则匹配,还是字符串操作,还是排序。

一、正则表达式

(1)基本的正则表达式

和python没什么区别

(2)使用方法

直接是grep +  正则表达式 + 文件, 之后按照每行匹配,将匹配满足的行输出。

二、字符串截取命令

1.cut命令

(1)概述

他的局限在于,如果有很多空格,他就分隔不了了。比如有的列是三个空格,有的列是两个空格,如果还是按照空格分隔会很奇怪。

(2)示例

提取文件中的某些列

2.printf命令

(1)概述

其实前面的n不经常用,啊哈哈哈哈哈。因为我们输出的时候,会多写几个 %s。

后面不能跟文件,只能是文件的内容。

(2)示例

他的这个输出是默认没有格式的,需要自己添加格式,他是凝成一坨输出。

自己输出格式顶多也就是\t和\n了。

3.awk命令

(1)概述

awk什么也不写的情况下,默认对每行按照空格和制表符进行分割,之后可以使用$加数字表示第几列。

如果没有条件,那么对全部文件进行操作。

主要作用是对cut的补充。

(2)示例

Ⅰ:输出指定的一些列

(3)BEGIN

下面这个表示BEGIN表示在所有的数据读入之前执行的动作,也就是打印******。

(4)FS内置变量

作用是指定分隔符。下面这个代码是,默认akw按照空格和制表符分隔,现在按照冒号分隔。这个前面必须要有BEGIN。否则第一行的数据还是默认按照空格分隔。

(5)END

最后执行的操作。

(6)关系运算符

4.sed

(1)概述

它可以处理流结构。也就是说可以直接对命令的输出进行进一步的处理。

(2)常见用法

Ⅰ:打印指定行

这里可以看出加不加n的区别,加n他就只打印第二行,不加n他就顺便把所有的表格再打印一遍。

Ⅱ:删除指定行数据

下面就是删除2,3行的数据

Ⅲ:追加

包括行后追加和行前插入。

Ⅳ:替换

包括按行替换和按字符串替换

最后对于上面的所有操作,如果加上i,那么就可以将更改保存到原来的文件中。

三、字符串处理命令

1.sort

(1)sort直接排序,对每行排序,按照字母表顺序a-z

(2)sort -r  按照字母表反向排序z-a

(3)指定分隔符,按照行内的某些元素排序

-t ":" 表示以:为分隔符。  -k表示分割后的第几列,后面的两个3表示作用域的开始和结束。如果只有一个,那么默认到最后

sort -t ":" -k 3,3 /ect/passwd

(4)指定为数值类型 -n

对于上面的例子,第三行他会把1拍到最前面,他不会考虑121 比 2 大, 因为第一个是1,所以还是排在前面,如果我们想要通过数值比较,那么需要-n。

2.wc

(1)基本概念

(2)实操

四#条件判断

1.按照文件类型进行判断

&& 表示前面的指令执行成功后后面的才会执行

总体表示存在/root输出yes,否则输出no

注意判断语句前后都有空格

[ -d /root ] && echo "yes" || echo "no"

2# 按照文件权限进行判断

但是不能判断是不是用户组,还是用户权限,只要三大权限有一个满足,就算判断成功。

3.两个文件之间进行比较

对于-ef的这个办法,常用于判断两个文件是否一样。因为硬连接的话,两个文件名可以不同,这个时候可以使用。

4.两个整数进行比较

5.字符串的判断

注意这个赋值的等号不能有空格

6.多重条件判断

五.流程控制语句

1.if语句

(1).单支if条件语句

我一般使用第二种,啊哈哈哈哈

#!/bin/bashrate=$(df -h | grep "/dev/nvme0n1p8" | awk '{print $5}' | cut -d "%" -f1)if [ $rate -ge 8 ]thenecho "warning"fi

(2)双分支if语句

(3)多分支if语句

2.case语句

#!/bin/bashread -p "Please choose yes/no" -t 30 chocase $cho in "yes")echo "Your choose yes";;"no") 	echo "Your choose no";;*)	echo "Your choose is error";;
esac

3.for循环

(1)语法1

#!/bin/bashfor num in 1 2 3 4 5doecho $numdone

他的更多的体现在批量话的功能,比如下面;批量解压文件

> 表示追加

>> 表示覆盖

&> 表示将标准输出和错误输出不使用命令行输出,输出大/dev/null

/de/null 是一个回收站,放到这里的东西不会在磁盘上有残留。

(2)语法2

注意

写法语法类型用途是否正确(算术运算场景)
s=$(($s + $i))算术扩展进行整数算术运算正确
s=$($s + $i)命令替换执行系统命令并获取输出错误(无法用于算术运算)

如果需要在 Shell 中进行算术运算,务必使用 $((...)) 语法;$(...) 仅用于执行外部命令,不可混淆。

#!/bin/bash
s=0
for((i=0;i<=100;i=i+1))dos=$(($s+$i))done
echo $s

4.while循环和until循环

(1)while循环

#!/bin/bash
s=0
i=1
while [ $i -le 100 ]dos=$(($s+$i))i=$((1+$i))done
echo $s

(2)until循环

#!/bin/bash
s=0
i=1
until [ $i -ge 101 ]dos=$(($s+$i))i=$((1+$i))done
echo $s

http://www.dtcms.com/a/607047.html

相关文章:

  • SAP FICO应付暂估款账龄分析表
  • 牡丹园网站建设p2p网站开发维护
  • 做网站系统学校淮滨网站建设
  • wordpress模版做网站宁波网络营销服务
  • C语言编译器哪个好学 | 学习C语言编译器的入门指南与推荐
  • 【036】阳乐音乐厅购票平台
  • Katalon Studio 最佳实践:提升自动化测试效率的实用指南
  • Vue项目实战《尚医通》,登录模块表单自定义校验规则,笔记29
  • 数据分析笔记05:区间估计
  • sdcms网站建设模板wordpress添加新建标签页
  • 酥糖的网站建设的目的是什么样本代替做网站
  • 做外贸网站平台有哪些内容海口网微博
  • 学校网站平台建设方案138企业邮箱登录
  • 提供网站建设方案ppt263网站建设怎么样
  • 购物网站图片的放大怎么做的信宜网站建设
  • 更合网站设计动漫网站开发与建设
  • 苏州外贸企业网站建设网站标题改不了
  • 使用 Redis 实现高并发天气查询的优化方案
  • Android HWUI绘制流程
  • 企业首次建设网站的策划流程最热门的短期培训课程
  • 地方做什么网站手机网站 代码
  • libfvad 库详解:原理、使用方法与实践案例
  • Effective STL 第9条:C++容器元素删除技巧详解
  • wordpress关闭评论窗口seo标题优化关键词怎么选
  • 推广网站做网站图结构
  • 4G LTE多天线技术
  • Python社区文化:如何参与开源并提交你的第一个PR?
  • 北京市网站建设公司排名潍坊百度关键词优化
  • 网站建设用语言wordpress pageadmin
  • Entity API vs Primitive API 详细对比