当前位置:网站首页>[轻松学会shell编程]-4、单引号和双引号的区别、整形数值的运算、shell中数组定义和sed的详细用法
[轻松学会shell编程]-4、单引号和双引号的区别、整形数值的运算、shell中数组定义和sed的详细用法
2022-06-22 16:52:00 【FanMY_71】
1、单引号和双引号的区别
单引号所见即所得

2、整形数值的运算:

[[email protected] ~]# a=10
[[email protected] ~]# b=20
[[email protected] ~]# echo $(($a+$b))
30
[[email protected] ~]# echo $[$a+$b]
30
# 使用expr
[[email protected] ~]# expr $a+$b
10+20
[[email protected] ~]# expr $a + $b
30
浮点型的话,就是用bc
3、shell中的数组
定义:使用圆括号、中间以空格作为分隔符
[[email protected] case]# a=(xx yy zz ff)
[[email protected] case]# echo $a
xx
[[email protected] case]# echo ${a[*]}
xx yy zz ff
[[email protected] case]# echo ${a[@]}
xx yy zz ff
[[email protected] case]# echo ${a[@]:1:3}
yy zz ff
[[email protected] case]# echo ${#a[@]}
4
[[email protected] case]# a[3]='hh'
[[email protected] case]# unset a[2]
[[email protected] case]# echo ${!a[@]}
0 1 3
4、sed
sed是一种支持正则表达式的非交互式流编辑器(stream editor)。Linux系统中的sed命令主要是利用script来处理文件的。

- 内存中关于sed有两个空间:patterrn space(模式空间;加工车间)和hold space(保留空间;临时仓库)
- 两个空间可以互相访问的。
- 一般保留空间不使用,只是用模式空间。模式空间处理完一行,就会清空并且输出到屏幕上。然后进行下一行操作。若是你想要保留这一行,你可以把它放进保留空间。
模式空间的概念
模式空间:sed工具从文件读取一行文本然后存入的缓冲区,然后命令操作模式空间的内容,在初始状态下模式空间是没有内容的,在每次循环读取数据的过程中,模式空间都会被清空并写入新的内容(这里补充一点,sed命令操作就是 “模式空间” 而不是内存,这就是为什么sed不会改变原文件内容的原因,如果想改变原文件内容需要加-i选项)
sed工具的执行流程图

命令n的工作流程图:
清空当前模式空间,然后读入下一行(如果sed语句遇到n命令会改变正常的执行流程),执行流程如下:

4.1、sed的语法命令格式和常用选项
命令格式:

一般只用到前面两种语法。
常用选项:
sed查找方式:
- 根据行号
- 根据模式--》正则表达式=字符+特殊符号
- 根据字符串
4.1.1、sed的常用编辑命令

4.1.2、sed的p命令示例
[[email protected] rough_book]# sed -n '3,5p' passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
# -n,抑制模式空间的自动打印,即仅显示script处理后的结果。若是没有这个 -n,会输出整个"passwd"文件,且3到5行会输出两遍。因为3到5行刚好符合我们设置的条件,所以会在patter space中逗留,处理完之后又会输出一遍,所以就会造成出现输出两遍。
# 这样看的清楚一些
[[email protected] rough_book]# cat passwd -n |sed -n '3,5p'
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
- sed -n '10p' passwd 显示第10行
- sed -n '$p' passwd 显示最后一行
- sed -n '2+2p' passwd 显示2,3,4行
- sed -n '10,30!p' passwd 显示出了10到30的行
- sed -n '2 ~2p' passwd 显示双数行。从2开始步长为2开始取。
4.1.3、sed -n '/模式/p' 输入文件
- 这里的模式可以是正则表达式也可以是精确字符
- 模式用/括起,扩展正则要加-r选项
[[email protected] rough_book]# sed -n '/bash$/p' passwd
# 这里面^也可以使用使用扩展正则
[[email protected] rough_book]# sed -nr '/^fan|^zhao/p' passwd
fan1:x:7800:7803::/home/fan1:/bin/bash
fan2:x:7801:7804::/home/fan2:/bin/bash
zhaoliying1:x:7802:7805::/home/zhaoliying1:/bin/bash
使用转义字符
[[email protected] rough_book]# df -h|sed -n '/\/$/p'
/dev/mapper/centos-root 17G 3.2G 14G 19% /
4.2、sed里单引号和双引号的区别
- 双引号里可以使用shell里的变量
[[email protected] rough_book]# a=5
[[email protected] rough_book]# b=10
[[email protected] rough_book]# cat -n passwd |sed -n "${a},${b}p"
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
- 单引号不行
- 单引号和双引号里都可以存放模式

边栏推荐
- 视频直播系统源码,顶部标题栏的隐藏和标题修改
- 如何理解volatile
- JSP learning (3) -- JSP implicit object
- 基于转换器 (MMC) 技术和电压源转换器 (VSC) 的高压直流 (HVDC) 模型(Matlab&Simulink实现)
- 问下 cdc 2.2.1监控sqlServer是不支持监控多库的吗?
- Correct method of converting Inkscape into DXF file SVG exporting DXF file
- [fpga+pwm] design and implementation of phase shift trigger circuit for three-phase PWM rectifier based on FPGA
- Jenkins配置项目集成钉钉通知
- 【人脸识别】基于GoogleNet深度学习网络的人脸识别matlab仿真
- Jenkins configuration project integration pin notification
猜你喜欢

How to do well in R & D efficiency measurement and index selection
![[win11] right click fix to modify the registry but not create a new one](/img/5c/1ce29da6f1325f9f6c84984ae0c2e5.png)
[win11] right click fix to modify the registry but not create a new one

诺亚财富拟登陆港交所:第一季度业绩大幅下滑,曾踩雷“承兴案”

利用Inkscape转换为dxf文件的正确方法 svg导出dxf文件

写一本畅销书是怎样的一种体验

Interview shock 58: Six differences among truncate, delete and drop!

Using stream API instead of SQL

client-go gin的简单整合十-Update

Tasks and responsibilities of the test team and basic concepts of testing

STM32 series (HAL Library) - f103c8t6 hardware SPI illuminates OLED screen with word library
随机推荐
测试组的任务职责和测试的基本概念
新手必会的静态站点生成器——Gridsome
问下 cdc 2.2.1监控sqlServer是不支持监控多库的吗?
华为云“数智”化运维
Xftp 7 (ftp/sftp client) v7.0.0107 official Chinese free official version (with file + installation tutorial)
知乎热问:一个程序员的水平能差到什么程度?
[fpga+pwm] design and implementation of phase shift trigger circuit for three-phase PWM rectifier based on FPGA
诺亚财富拟登陆港交所:第一季度业绩大幅下滑,曾踩雷“承兴案”
炒股开户选择哪个券商公司是最安全最好呢
client-go gin的简单整合十-Update
Tasks and responsibilities of the test team and basic concepts of testing
大一女生废话编程爆火!懂不懂编程的看完都拴Q了
Simple integration of client go gin -update
如何理解volatile
Gridhome, a must-have static site generator for beginners
[OWT] OWT client native P2P E2E test vs2017 build
直播预告 | 12位一作华人学者开启 ICLR 2022
内容推荐流程
新东方转型双语直播带货给项目管理人的一场课
Fluentd is easy to get started. Combined with the rainbow plug-in market, log collection is faster