数组和文本三剑客

数组:

数组的定义:在集合当中指定多个元素,元素的类型:整数,字符串,浮点数。

数组的作用:可以一次性的定义多个元素,可以为变量赋值提供便利。

数组的定义方法:

数组名=(a b c d)

数组名不能重复

#数组的定义方法
[root@localhost opt]# test1=(a b c d)
[root@localhost opt]# echo ${test1[*]}
a b c d
[root@localhost opt]# echo ${test1[@]}
a b c d
[root@localhost opt]# test2[0]=1
[root@localhost opt]# test2[1]=2
[root@localhost opt]# test2[2]=3
[root@localhost opt]# echo ${test2[*]}
1 2 3

数组的长度指的是数组内包含了几个元素。

[root@localhost opt]# echo ${#test1[*]}
4

数组的便利方式

#数组的便利方式
test4=(1 2 3 4 5)
for num in ${test4[*]}
do
echo $num
done

数组的切片

[root@localhost opt]# test5=(1 2 3 4 5 6)
[root@localhost opt]# echo ${test5[*]:1:3}
2 3 4
[root@localhost opt]# echo ${test5[*]:0:2}    #0表示起始位置,2表示步长,起始位置0开始,包括0,移2个。
1 2

数组的替换

临时替换:

[root@localhost opt]# echo ${test5[*]/4/99}
1 2 3 99 5 6
[root@localhost opt]# echo ${test5[*]}
1 2 3 4 5 6

永久替换:通过修改元素下标的值可以实现。

[root@localhost opt]# test5[3]=99
[root@localhost opt]# echo ${test5[*]}
1 2 3 99 5 6

删除数组

[root@localhost opt]# echo ${test1[*]}
a b c d
[root@localhost opt]# unset test1
[root@localhost opt]# echo ${test1[*]}
[root@localhost opt]# echo ${test5[*]}
1 2 3 99 5 6
[root@localhost opt]# unset test5[3]
[root@localhost opt]# echo ${test5[*]}
1 2 3 5 6

数组追加,追加元素

指定下标位置进行追加

[root@localhost opt]# test5[3]=4

自动追加

[root@localhost opt]# test5+=(7 8)
[root@localhost opt]# echo ${test5[*]}
1 2 3 4 5 6 7 8

练习

#现在定义一个数组,元素都是整数,实现数组内整数的累加求和。
num=0
sum=0
test1=(10 21 30 41 50 61 70 81 90)
for i in ${test1[*]}
do
if (( $i%2 == 0 ))
thennum=$(($i+$num))
elsesum=$(($i+$sum))
fi
done
echo "偶数和是:" $num
echo "奇数和是:" $sum
#定义一个数组,使用条件判断找出数组内最大值和最小值
test1=(3 5 7 4 9)
a=${test1[0]}
b=${test1[0]}
for i in ${test1[*]}
do
if [[ $i -gt $b ]]
thenb=$i
fi
if [[ $i -lt $a ]]thena=$ifi
done
echo $b
echo $a

冒号排序:

test1=(20 10 60 40 50 30)
#从小到大排序
#思路:对比两个相邻的元素,从小到大为例。满足交换条件的元素,小的往左移,大的往右移。
#数组的位置发生变化(下标对应的元素的值发生变化)
#双层循环,外部循环控制排序的轮次。内循环比较两个元素的大小,决定是否互换位置。
#对比和交换的次数随着排序轮次而减少。
echo "原数组的排序为:${test1[*]}"
length=${#test1[*]}
for ((i=1;i<$length;i++))
dofor ((j=0;j<$length-i;j++))doa=${test1[$j]}c=$(($j+1))b=${test1[$c]}if [[ $a -gt $b ]]thend=$atest1[$j]=$btest1[$c]=$d
​fidone
done
echo "${test1[*]}"
[root@localhost opt]# sh shuzu3.sh 
原数组的排序为:20 10 60 40 50 30
10 20 30 40 50 60

正则表达式:

正则表达式匹配的是文本内容,linux的文本三剑客 都是针对文本内容

文本三剑客:

grep 过滤文本内容

sed 针对文本内容进行增删改查

awk 按行取列

文本三剑客都是按行进行匹配。

grep的作用就是使用正则表达式来匹配文本内容。

选项:

-m 匹配几次之后停止

[root@localhost opt]# grep -m 1 root /etc/passwd
root:x:0:0:root:/root:/bin/bash

-v 取反

-n 显示匹配的行号

[root@localhost opt]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

-c 只统计匹配的行数

[root@localhost opt]# grep -c root /etc/passwd
2

-o 仅显示匹配的结果

[root@localhost opt]# grep -o root /etc/passwd
root
root
root
root

-q 静默模式。不输出任何信息

[root@localhost opt]# grep -q root /etc/passwd
[root@localhost opt]# 

-A 数字 后几行

[root@localhost opt]# grep -A 3 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

-B 数字 前几行

-C 数字 前后各几行

-e 或者

-E 匹配扩展正则表达式

-f 匹配两个文件相同的内容,以第一个文件为准

[root@localhost opt]# vim 123.txt
qwe 123 aaa bbb ccc
[root@localhost opt]# vim 456.txt
123 qwe ddd ccc
[root@localhost opt]# grep -f 123.txt 456.txt 
123
qwe
ccc

-r 递归目录 目录下的文件内容。软连接不包含在内

-R 递归目录 目录下的文件内容。包含软连接。

[root@localhost opt]# grep -r qwe /opt
/opt/dec/123.txt:qwe
/opt/123.txt:qwe
/opt/456.txt:qwe
[root@localhost opt]# grep -R qwe /opt
/opt/dec/123.txt:qwe
/opt/123.txt:qwe
/opt/999.txt:qwe
/opt/456.txt:qwe

排序:

sort

以行为单位,对文件的内容进行排序

sort 选项 参数

cat file | sort 选项

-f 忽略大小写,默认会把大写字母排在前面

-b 忽略每行之前的空格

-n 按照数字进行排序

-r 反向排序

-u 相同的数据仅显示一行

-o 把排序后的结构转存到指定的文件

uniq 去除连续重复的行,只显示一行

-c 统计连续重复的行的次数,合并连续重复的行

-u 显示仅出现一次的行(包括不是连续出现的重复行)

-d 仅显示连续重复的行(不包括非连续出现的内容)

作业:

按照大小进行排序

for k in `df -h | awk 'NR>1 {print $5}' | tr -d '%'`
dotest2+=($k)
length=${#test2[*]}for ((i=1;i<$length;i++))dofor ((j=0;j<$length-i;j++))doa=${test2[$j]}c=$(($j+1))b=${test2[$c]}if [[ $a -lt $b ]]thend=$atest2[$j]=$btest2[$c]=$d
​fidone
done
done
echo ${test2[*]}
​
[root@localhost opt]# sh shuzu5.sh 
100 39 18 15 1 1 1 1 0 0 0 0
test2=($(df -h | awk 'NR>1 {print $5}' | tr -d '%'))
length=${#test2[*]}for ((i=1;i<$length;i++))dofor ((j=0;j<$length-i;j++))doa=${test2[$j]}c=$(($j+1))b=${test2[$c]}if [[ $a -lt $b ]]thend=$atest2[$j]=$btest2[$c]=$d
​fidone
done
echo ${test2[*]}
df -h | awk 'NR>1 {print $0}'  | sort -k5 -nr
​
[root@localhost opt]# sh shuzu5.sh 
100 39 18 15 1 1 1 1 0 0 0 0
/dev/sr0                 4.3G  4.3G     0  100% /mnt
/dev/sdb2                 17M  6.5M   11M   39% /data2
/dev/sda1               1014M  179M  836M   18% /boot
/dev/mapper/centos-root   38G  5.5G   32G   15% /
tmpfs                    378M   12K  378M    1% /run/user/42
tmpfs                    1.9G   13M  1.9G    1% /run
/dev/sdb3                5.0G   33M  5.0G    1% /data3
/dev/mapper/centos-home   19G   37M   19G    1% /home
tmpfs                    378M     0  378M    0% /run/user/0
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs                    1.9G     0  1.9G    0% /dev/shm
devtmpfs                 1.9G     0  1.9G    0% /dev
​

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

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

相关文章

手机录屏声音怎么录?2个小妙招教会你

手机录制好的视频怎么没有声音&#xff1f;你是否也遇到了这个难题&#xff1f;在日常生活中&#xff0c;手机录屏功能已经成为我们生活和工作中的得力助手。而录屏的声音&#xff0c;作为录屏功能的重要组成部分&#xff0c;更是为我们的录制体验增添了不少色彩。那么&#xf…

SSA-CNN多输入时序|樽海鞘算法-卷积神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

Termius for Mac/Win:跨平台多协议远程管理利器

Termius for Mac/Win是一款备受瞩目的跨平台多协议远程管理软件&#xff0c;以其卓越的性能、丰富的功能和便捷的操作体验&#xff0c;赢得了广大用户的青睐。无论是在企业IT管理、系统维护&#xff0c;还是个人远程连接、文件传输等方面&#xff0c;Termius都展现出了出色的实…

乾坤微服务的使用

前言&#xff1a; 在这里整理下用乾坤来开发微服务的一些资料。 使用好处&#xff1a; 使用乾坤可以实现什么效果呢&#xff1f;众所周知&#xff0c;前端的框架五花八门&#xff0c;react/vue/angular等各领风骚&#xff0c;那么如果我们有需要把不同技术栈的项目整合起来&…

Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

某天开机,发现Mysql被异常关闭,并且启动不起来,出这篇文章也是为了下次遇到类似问题,迅速解决(请细读文章,因为第二个方案才是主要方案) 第一个解决方案 我采用的第一个方法查“端口占用“问题(因为这是一篇博客所以我写的操作比较详细为了方便后面看这篇博客的人,我自…

如何在前端项目中用字体图标替换图片,方便减小打包体积和统一切换颜色

1.进入阿里妈妈矢量图标图库 地址&#xff1a;阿里妈妈矢量图 2.搜索自己想要的图标 3.添加自己想要的图标 4.把刚才选的图标&#xff0c;添加到自己要下载的项目 5.把项目下载到本地 6.引入iconfont.css 在div上增加对应的类名就可以啦 下载的所有类名都在下面的demo_index…

MySQL从5.7升级到8.0步骤及其问题

MySQL从5.7升级到8.0步骤及其问题 前言 本文源自微博客&#xff0c;且以获得授权&#xff0c;请尊重版权。 一、需求背景 Docker环境下&#xff0c;MySQL5.7升级到8.0&#xff0c;数据迁移时使用的是mysqldump方式迁移。 二、迁移步骤 数据备份&#xff1a; docker exec -i 1…

python-画三角形

[题目描述] 输入一个正整数n&#xff0c;请使用大写字母拼成一个这样的三角形图案&#xff08;参考样例输入输出&#xff09;&#xff1a;三角形图案的第1行有1个字母&#xff0c;第2行有2个字母&#xff0c;以此类推&#xff1b;在三角形图案中&#xff0c;由上至下、由左至右…

使用高德API计算两个地址的距离

要使用高德地图API来计算两个城市之间的距离&#xff0c;你需要首先在高德开放平台上注册并获取API密钥&#xff08;AK&#xff09;。以下是一个使用Java调用高德地图API来计算两个城市之间距离的示例代码。 步骤 1: 获取高德地图API密钥 访问高德开放平台&#xff08;https:…

GIS设计与开发课程设计(三)

环境&#xff1a;Windows10专业版 ArcGIS10.2 ArcEngine10.2 Visual Studio 2019 因每个人电脑版本和软件版本不同&#xff0c;运行的结果可能不同 系列文章&#xff1a; GIS设计与开发课程设计&#xff08;一&#xff09; GIS设计与开发课程设计&#xff08;二&#xff09;…

Apple Watch开发入门知识,还是很有必要的

随着现在 Apple 生态圈的发展&#xff0c;越来越多的 App 会把自己的简化版从 iOS 迁移至 WatchOS&#xff08;支付宝、微信、手Q、头条、QQ音乐、网易云音乐等等&#xff0c;都有Watch版App&#xff09;。官方开发文档&#xff1a;Setting up a watchOS project | Apple Devel…

神经网络学习3-卷积层

膨胀卷积&#xff0c;也被称为空洞卷积或扩张卷积&#xff0c;是一种特殊的卷积运算&#xff0c;它在标准卷积的基础上引入了一个额外的超参数&#xff0c;即膨胀率&#xff08;dilation rate&#xff09;。这个超参数决定了在卷积核的元素之间插入多少额外的空间。通过这种方式…

04-对原生app应用中的元素进行定位

本文介绍对于安卓原生app应用中的元素如何进行定位。 一、uiautomatorviewer uiautomatorviewer是Android-SDK自带的一个元素定位工具&#xff0c;非常简单好用&#xff0c;可以使用该工具查看app应用中的元素属性&#xff0c;帮助我们在代码中进行元素定位。 1&#xff09;使…

el-table 固定前n行 配合 max-height 生效

:row-class-name"TableRowClassName" 加上类名 <el-table:data"computedTableList"borderstyle"width: 100%":row-class-name"TableRowClassName"max-height"800"><el-table-column fixed prop"name"…

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录 前言 正文 7.报警Alarms 7.1配置Alarms 7.1.1激活一个任务 7.1.2 设置一个事件 7.1.3报警回调Alarm Callback 7.1.4 增加计数器值 7.2设置Alarms 7.2.1 绝对Alarms 7.2.2 相对Alarm 7.3自启动Alarms 7.4 删除Alarms 7.5确认何时会发生Alarm 7.6非周期Alarm…

细致解析跨境电商多平台搭建利器-179海关接口源码应用方法

介绍 跨境电商已成为当前电商行业的热门发展方向之一。为满足跨境电商的需求&#xff0c;各大平台纷纷推出了多平台搭建利器。其中&#xff0c;179海关接口源码是一款非常实用的工具&#xff0c;本文将对其应用方法进行细致解析。 了解179海关接口源码 179海关接口源码可以帮…

2024最新版Vcpkg安装第三方库报错error: building XXXX failed with: BUILD_FAILED

很多朋友用Vcpkg安装第三方库的时候基本都会遇到报错的情况&#xff0c;而且大部分都会出现下面这个页面里面的红色报错信息&#xff0c;但是实际上真正错误应该是上面的Cmake Error提示&#xff0c;下面的红色警告只是Vcpkg官方提供给我们的一个最基础的解决方式&#xff0c;而…

【Docker系列】深入解析 Docker 容器部署脚本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【稳定检索/投稿优惠】2024年生物技术与食品科学国际会议(ICBFS 2024)

2024 International Conference on Biotechnology and Food Science 2024年生物技术与食品科学国际会议 【会议信息】 会议简称&#xff1a;ICBFS 2024 大会时间&#xff1a;点击查看 截稿时间&#xff1a;点击查看 大会地点&#xff1a;中国厦门 会议官网&#xff1a;www.icb…

汇聚荣优势是什么?

汇聚荣优势是什么?在探讨企业成功之道时&#xff0c;我们不得不提及“汇聚荣优势”这一概念。简而言之&#xff0c;它指的是企业通过整合内外部资源&#xff0c;形成独特的竞争优势&#xff0c;以实现持续发展与市场领先地位的战略行为。这种优势的构建不是一蹴而就的&#xf…