数组
1、定义
在集合当中指定多个元素,元素的类型:整数、字符串、浮点
2、作用
一次性的定义多个元素,可以为变量赋值提供便利
3、数组的定义方法
数组名不能重复
方法1:
数组名=(a b c d)
打印数组的值:echo ${数组名[*]}
echo ${数组名[@]}
方法2:
test1[0]=1
test1[1]=2
test1[2]=3
数组内部的元素值,从0开始
数组的长度指的是数组包含了几个元素
4、获取数组内有几个元素
echo ${#test2[*]} echo ${#test2[@]}
5、查看数组内的指定元素
echo ${数组名[0]}
6、数组的遍历
test4=(1 2 3 4 5) for num in ${test4[*]} do echo $num done
7、数组的切片
test5=(1 2 3 4 5) echo ${test5[*]:0:2} #0表示起始位置,2表示步长,起始位置0开始,包括0,移动2位 1 2 echo ${test5[*]:1:3} 2 3 4
8、数组的替换
8.1临时替换
echo ${test5[*]/4/99} 1 2 3 99 5
8.2永久替换
通过修改元素下标的值可以实现
test5[3]=99 echo ${test5[*]} 1 2 3 99 5
9、删除数组
9.1删除整个数组
unset test1 echo ${test1[*]}
9.2删除数组当中的元素
unset test5[3] echo ${test5[*]} 1 2 3 5
10、数组追加
追加元素,根据下标的位置进行追加
方法1:
test5[3]=4 echo ${test5[*]} 1 2 3 4 5 test5[5]=6 echo ${test5[*]} 1 2 3 4 5 6
方法2:
test5+=(7 8) echo ${test5[*]} 1 2 3 4 5 6 7 8
11、练习
练习1:定义一个数组,元素都是整数,实现数组内整数的累计和
test1=(10 20 30 40 50) sum=0 for i in ${test1[*]} do sum=$(($sum+$i)) done echo $sum
练习2:把数组当中的奇数和奇数相加,偶数和偶数相加
test1=(10 15 40 61 31 42) sum1=0 sum2=0 for i in ${test1[*]} do if [[ $i%2 -eq 0 ]] then sum1=$(($sum1+$i)) else sum2=$(($sum2+$i)) fi done echo $sum1 echo $sum2
练习3:定义一个数组,使用条件判断找出数组内最大值和最小值
test1=(3 5 7 4 9) max=${test1[0]} min=${test1[0]} for num in ${test1[*]} do if [ $num -gt $max ] then max=$num fi if [ $num -lt $min ] then min=$num fi done echo $max echo $min
12、冒泡排序
类似气泡上涌的工作,会将数组当中的元素按照从小到大,或者从大到小的顺序进行重新排序
思路:对比两个相邻的元素,以从小到大为例,满足交换条件的元素,小的往左移,大的往右移。
数组的位置发生变化(下标对应的元素的值发生变化)
使用双层循环,外部循环控制排序的轮次,内部循环比较两个元素的大小,决定时候互换位置
对比和交换的次数随着排序轮次而减少
test1=(20 10 60 40 50 30) echo "原数组的排序为:${test1[*]}" length=${#test1[*]} for ((i=1;i<$length;i++)) do for ((k=0;k<$length-i;k++)) do first=${test1[$k]} j=$(($k+1)) second=${test1[$j]} if [ $first -gt $second ] then temp=$first test1[$k]=$second test1[$j]=$temp fi done done echo "排序后的数组值为:${test1[*]}"
13、正则表达式
正则表达式匹配的是文本内容,linux的文本三剑客都是针对文本内容,都是按照行进行匹配
文本三剑客:
grep 过滤文本内容
sed 针对文本内容进行增删改查
awk 按行取列
grep的作用:使用正则表达式来匹配文本内容
13.1grep
-m:匹配几次之后停止 -m +数字
-v:取反
-n:显示匹配的行号
-c:只统计匹配的行数
-o:仅显示匹配的结果
-q:静默模式,不输出任何信息
-A +数字:after 后几行
-B +数字:before 之前的行
-C +数字:前后各几行
-e:或者
-E:匹配扩展正则表达式
-f:匹配两个文件相同的内容,以第一个文件为准
-r:递归目录,目录下的文件内容,软连接不包含在内
-R:递归目录,目录下的文件内容,包含软连接
13.2sort排序
sort:以行为单位,对文件内容进行排序
sort 选项 参数
cat file | sort 选项
-f:忽略大小写,默认会把大写字母排在前面
-b:忽略每行之前的空格(不是把空格删除,只是依然按照数字和字母的顺序排列)
-n:按照数字进行排序
-r:反向排序
-u:去重,相同的数据仅显示一行
-o:把排序后的结果转存到指定的文件
13.3uniq
去除连续重复的行,只显示一行
-c:统计连续重复的行的次数,合并连续重复的行
-u:显示仅出现一次的行(包括不是连续出现的重复行)
-d:仅显示连续重复的行(不包括非连续出现的内容)
原文地址:https://blog.csdn.net/QChestnut/article/details/139807586
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!