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

Shell 语法摘要

sed 的使用

sed 的全称是 Stream Editor,即流编辑器。它可以逐行处理输入数据(先将读入的行放到缓冲区中,对缓冲区里的内容进行处理),并将处理结果输出到标准输出。

格式:sed [选项] [address]{脚本命令(块)} 文件名 前缀 address 可以是数字或者文本(正则),格式:[address]脚本命令 或 address {多个脚本命令}
选项 含义
-e 串联多个操作指令(复杂操作建议用分号分隔指令或使用多个-e)
-f 选项会将其后文件中的脚本命令添加到已有的命令中。
-n 默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
-i 此选项会直接修改源文件,要慎用。
- sed s 替换脚本命令 :s/pattern(可以使用正则表达式)/replacement/flags
- sed d 删除脚本命令 :如果不指定具体行,文件中的所有内容都会被删除
- sed a 和 i 插入脚本命令: a 命令表示在指定行的后面插入一行,i 命令表示在指定行的前面插入一行
- sed c 替换行命令:  用于将匹配到的整行内容替换为指定的新内容:  sed '[地址]c 新内容' 输入文件- sed y 单字符转换命令:  y/inchars/outchars/.    y 转换命令是唯一可以处理单个字符的 sed 脚本命令
- sed p 打印脚本命令: p 命令表示搜索符号条件的行,并输出该行的内容(-n选项和p命令配合使用可以禁止输出其它行,只打印包含匹配文本模式的行)
- sed w 脚本命令 :  w 命令用来将文本中指定行的内容写入文件中
- sed r 读取文件命令:   r 命令用于将一个独立文件的数据插入到当前数据流的指定位置
在 sed 编辑器中,有两个非常重要的概念:保留空间(hold space)和模式空间(pattern space)
  1. 保留空间
  • 保留空间是 sed 的第二个缓冲区,它允许 sed 在处理模式空间的内容时保存数据。
  • 保留空间可以用来存储模式空间中当前行的副本,或者用于在不同行之间传递数据
  1. 模式空间
  • 模式空间是 sed 用来处理输入文本的地方。
  • 当 sed 读取输入文件的每一行时,它会将这一行放入模式空间,然后对模式空间中的内容执行指定的编辑命令。
  • 默认情况下,模式空间的内容在处理后被输出到标准输出(通常是屏幕)。
  • 模式空间的大小通常受限于系统内存,但通常足够处理单行文本。

awk 的使用

更适合格式化文本,对文本进行较复杂格式处理

格式:awk [选项] [address]{脚本命令(块)} 文件名

选项 含义
-F fs 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。
-f file 从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。
-v var=val 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。
awk 正则有几种使用方法
1.直接当做条件 awk  '/正则/{执行语句}'  file  表示只对能够匹配正则的行执行后面的语句, !/正则/ 则是不匹配时执行
2.对某个列进行判断  awk '$1 ~ /正则/ {执行语句}'  file  表示第一列如果匹配正则,对该行进行处理。也可以用  ~!  或  !~  表示不匹配时进行处理。第一种情况相当于  $0 ~ /正则/
3.分隔符使用正则, 在awk的-F参数后可以直接使用正则表达式 表示能够匹配的都当做分隔符;awk中设置  其他分隔符 如FS、RS等也可以使用正则
4. 几个拆分函数:
如split(s,a,fs),用fs将s分成序列a,其中fs就可以用正则;几个替换函数:
如gensub(a,b,c[,d])等也可以包含正则表达式,例如:gensub(/123/,"x",1,$1)替换$1中 第一次匹配到的123为字符x,返回值为$1替换后的内容,且$1的内容并没有改变等等
如gsub(r,s)在整个$0中用s替代r; gsub(r,s,t)在整个t中用s替代r
awk的内建变量
$0:代表整行内容
$1:第几个字段
NF:当前行的字段数
NR:行号
FS:字段分隔符
OFS:输出的字段分隔符
RS:记录分隔符/行分隔符,默认 \n
ORS:输出的记录分隔符/行分隔符

shell脚本变量的含义

S#: 表示执行脚本传入参数的个数
*:  表示执行脚本传入参数的列表(不包括0)
$$: 表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)
$!: Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)
@ : 表示执行脚本传入参数的所有个数(不包括0)
$0: 表示执行的脚本名称
$1: 表示第一个参数
$2: 表示第二个参数
$?: 表示脚本执行的状态,0表示正常,其他表示错误

img

http://www.wxhsa.cn/company.asp?id=1111

相关文章:

  • 软件设计师知识点总结(一)
  • 智能引擎驱动:DRS.Editor让汽车诊断设计效率跃升!
  • 【译】Visual Studio 2026 Insider 来了!
  • GAS_Aura-Granting Abilities
  • CH584 CH585 触摸应用介绍一
  • OpenEuler 24.03 (LTS-SP2)安装最新版本docker
  • 西门子SINAMICS S120伺服驱动系统介绍
  • 第10章 STM32 模拟SPI电阻屏触摸配置和测试
  • ABAP同步和异步
  • 202208_网鼎杯青龙组_CRYPTO
  • Oracle笔记:11GR2 datagruad 环境搭建BORKER
  • GAS_Aura-Gameplay Abilities
  • 可视化图解算法60:矩阵最长递增路径
  • 灵码产品演示:软件工程架构分析
  • 扩展 Min-Max 容斥
  • 北京市推进中小学人工智能教育工作方案(2025—2027年)
  • IvorySQL 适配 LoongArch 龙架构
  • Gitlab-ee v18.1.1 破解
  • MySQL查询助手!嘎嘎好用
  • 题解:P13979 数列分块入门 4
  • ICPC模拟赛#1
  • 从基础到实战:一文吃透 JS Tuples 与 Records 的所有核心用法
  • YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
  • NKOJ全TJ计划——NP4582
  • VibeCoding On Function AI Deep Dive:用 AI 应用生产 AI 应用
  • [题解] P13777 「o.OI R2」Meowalkane
  • Kubernetes Pod控制器
  • kingbase金仓数据库的用户权限管理
  • C++14之exchange
  • Blazor之第三方登录