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

Linux命令:文本处理工具sed详解

目录

一、概述

二、用法

1、基本语法

2、常用选项

3、命令格式

4、编辑命令

5、获取帮助

三、 示例

1、替换字符串

2、删除行

(1)删除包含"string"的所有行

​编辑

(2)删除从第1行到第10行的所有行

3、插入行

(1)在匹配"string"的行之前插入一行文本

(2)在匹配"string"的行之后插入一行文本

4、打印行

5、地址范围

四、高级用法示例

1、复合命令

2、脚本模式

五、 注意事项


一、概述

        sed(stream editor)是Linux/Unix系统中的一个强大的文本处理工具,它可以从标准输入读取数据,执行编辑命令,然后将修改后的输出发送到标准输出。sed命令非常适用于文本文件的处理,包括查找、替换、删除、添加行等操作,而无需修改原始文件。

       熟练掌握它sed可以极大地提高文本处理效率。

二、用法

1、基本语法

        sed的基本命令格式如下:

                sed [选项] '命令' 文件

        或者用于处理标准输入:

                sed [选项] '命令'

2、常用选项

 -e 或 --expression:指定要执行的一个或多条sed命令。

 -f 或 --file:从指定的文件中读取sed命令。

 -n 或 --quiet:抑制默认输出,只打印那些由p或=命令产生的行。

 -i 或 --in-place:直接修改输入文件而不是输出到标准输出。

 -u:使用-i时启用未缓冲模式,这对于大型文件尤其有用。

 -l 或 --line-length:设置每行打印字符数。

3、命令格式

sed命令通常包含地址和动作,格式如下:

        地址 { 动作 }

如果省略了地址,默认对所有行执行动作。

4、编辑命令

sed 的编辑命令非常多,但以下是一些最常用的:

  • s/pattern/replacement/flags:替换操作。将匹配 pattern 的内容替换为 replacement。flags 可以是 g(全局替换),i(忽略大小写)等。
  • d:删除操作。删除匹配的行。
  • p:打印操作。打印匹配的行(通常与 -n 选项一起使用)。
  • a\text:在匹配行之后追加文本 text。
  • i\text:在匹配行之前插入文本 text。
  • c\text:用文本 text 替换匹配的行。

5、获取帮助

输入如下命令:

        sed –-h

出现如下图所示的帮助信息:

三、 示例

1、替换字符串

将文件中所有的"oldstring"替换为"newstring":

sed 's/oldstring/newstring/' file12.txt

实际操作如下:

全局替换(即替换每一行中所有的匹配项):

sed 's/oldstring/newstring/g' file.txt

2、删除行

(1)删除包含"string"的所有行

        sed '/string/d' file.txt

        实际操作如下:

(2)删除从第1行到第10行的所有行

        sed '1,10d' file.txt

3、插入行

(1)在匹配"string"的行之前插入一行文本

sed '/string/i\

New line inserted here.' file.txt

(2)在匹配"string"的行之后插入一行文本

sed '/string/a\

New line inserted here.' file.txt

4、打印行

打印包含"string"的所有行:

        sed -n '/string/p' file.txt

实际操作如下:

5、地址范围

指定操作作用于某一行或一组行:

        sed '10,20s/old/new/' file.txt  替换第10到第20行中的old为new

四、高级用法示例

1、复合命令

可以组合多个命令,用分号;分隔:

sed '1s/^/ /; 2s/^/ /' file.txt  第1行和第2行前加

2、脚本模式

可以将多个命令写在一个文件中,然后用-f选项来运行这个脚本文件:

echo "s/old/new/" > sedscriptsed -f sedscript file.txt

五、 注意事项

1、sed命令是区分大小写的。

2、使用sed直接修改文件时要小心,因为一旦修改无法撤销。

3、对于复杂的文本处理任务,可能需要结合正则表达式或其他命令一起使用。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。



http://www.mrgr.cn/news/28380.html

相关文章:

  • HTML文件中引入jQuery的库文件
  • PHP大模型深度学习库TransformersPHP 安装体验
  • React Native 全栈开发实战班 - 核心组件与导航
  • 应用jar包使用skywalking8(Tongweb7嵌入式p11版本 by lqw)
  • 分布式光伏智慧平台建设现场 系统集成商如何盈利
  • MFC IDC_STATIC控件嵌入一个DIALOG界面
  • Linux whereis和which的区别
  • Vue2源码解读
  • 启动windows更新/停止windows更新,在配置更新中关闭自动更新的方法
  • 深入了解字符函数和字符串函数
  • 深度学习之微积分预备知识点
  • 【C++】模板进阶:深入解析模板特化
  • 类和对象补充
  • Linux常用命令以及操作技巧
  • 智能体趋势:未来科技的核心驱动力
  • 微信客户量太多难维护?三招提升你的回复效率!
  • 双三次插值及MATLAB实现
  • JavaSE阶段总结
  • C++初阶:STL详解(三)——vector的介绍和使用
  • OpenJudge | 八皇后问题
  • 嵌入式C语言详解与实现
  • 数据库之索引<保姆级文章>
  • floodfill算法(二)
  • robosuite基础教程(一)——基本概念
  • 猫头虎分享:Python库 PyMongo 的简介、安装、用法详解入门教程
  • 【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑