sed的具体用法

简介: sed的具体用法

sed 是一种强大的流编辑器,它在Unix和类Unix系统中广泛用于处理文本文件。以下是一些基本的用法和示例:

基本语法

# 单个命令行内编写命令
sed [选项] 'command' inputfile

# 使用-e参数添加多个命令
sed [选项] -e 'command1' -e 'command2' inputfile

# 从脚本文件读取命令
sed [选项] -f scriptfile inputfile

# 其中常用的选项包括:
- e, --expression=   后接一个编辑命令
- f, --file=        从指定文件中读取编辑命令
- i                直接修改原文件(默认不修改原文件,仅输出到标准输出)
- n, --quiet, --silent    只打印经过命令处理的行(静默模式)

常用命令及操作符:

  • 删除行

    • d 删除当前行
    • 5d 删除第5行
    • /pattern/d 删除包含匹配pattern的行
  • 替换

    • s/old/new/ 替换行中第一个出现的old为new
    • s/old/new/g 替换行中所有出现的old为new
    • s/old/new/gi 替换行中所有出现的old为new,并忽略大小写
    • 3,5s/old/new/g 在第3至第5行范围内替换old为new
  • 插入

    • a\text 在当前行后追加文本text
    • 3a\text 在第3行后追加文本text
  • 插入(在行首)

    • i\text 在当前行前插入文本text
  • 复制并打印行

    • p 打印当前模式空间中的行(默认行为)
    • p-n 静默模式下打印行
  • 跳转

    • t label 如果上一条命令替换成功,则跳转到label标签
    • b label 不论上一条命令是否成功都跳转到label标签
  • 读取外部文件内容

    • r file 在当前行后读取并插入file的内容
  • 写入文件

    • w file 将当前行写入到file中

示例:

  1. 删除每一行以'#'开始的注释:

    sed '/^#/d' inputFile.txt
    
  2. 将每一行中的"apple"替换为"banana":

    sed 's/apple/banana/g' inputFile.txt
    
  3. 在每一行末尾添加字符串 ".end" 并保存更改到原文件:

    sed -i '$ s/$/.end/' inputFile.txt
    
  4. 插入一行 "New Line" 在文件的第二行:

    sed '2i\\New Line' inputFile.txt
    

以上仅为简单示例,sed 的功能远不止于此,它可以结合正则表达式进行复杂的数据流编辑。

目录
相关文章
|
Linux 编译器 Android开发
linux交叉编译nss3,nspr库精讲
linux交叉编译nss3,nspr库精讲
555 1
|
iOS开发
iOS 逆向编程(十三)PS命令获取进程PID与名称(Process Status)
iOS 逆向编程(十三)PS命令获取进程PID与名称(Process Status)
384 0
|
C语言 机器学习/深度学习 C++
C语言的几种取整方法
C语言的几种取整方法 来源:http://blog.sina.com.cn/s/blog_4c0cb1c001013ha9.html 1、直接赋值给整数变量。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。
5212 0
|
8月前
|
大数据 BI 数据可视化
最新功能发布!AllData数据中台核心菜单汇总
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
最新功能发布!AllData数据中台核心菜单汇总
初识go变量,使用var和:=来声明变量,声明变量的三种方式
这篇文章介绍了Go语言中使用`var`和`:=`声明变量的三种不同方式,包括声明单个或多个变量、通过值确定数据类型以及在函数体内使用`:=`声明局部变量。
初识go变量,使用var和:=来声明变量,声明变量的三种方式
|
Unix Perl
`sed` 命令完整指南教程
【8月更文挑战第20天】
933 0
|
10月前
|
人工智能 自然语言处理 前端开发
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
CodeArena 是一个在线平台,用于测试和比较不同大型语言模型(LLM)的编程能力。通过实时显示多个 LLM 的代码生成过程和结果,帮助开发者选择适合的 LLM,并推动 LLM 技术的发展。
231 7
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
590 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
12月前
|
网络协议 Linux 芯片
Linux 内核 6.11 RC6 发布!
【10月更文挑战第12天】
455 0
Linux 内核 6.11 RC6 发布!
|
传感器 算法 定位技术
【信号处理】扩展卡尔曼滤波EKF(Matlab代码实现)
【信号处理】扩展卡尔曼滤波EKF(Matlab代码实现)
656 0
【信号处理】扩展卡尔曼滤波EKF(Matlab代码实现)