使用 sed 进行编辑
本文讨论的最复杂和最强大的编辑工具是 sed(流编辑器)。它是一个文本编辑器,但是与诸如 ed 等文本编辑器不同,它编辑输入流并写到输出流。因此,它对于编辑命令输出或对于使用其他工具对文件进行预处理非常有用——然后您可以将该文本通过管道直接输出给 sed,以进行快速编辑。但是 sed 还可以操作文件,并且其脚本语言具有高级模式匹配功能,因此它是用于执行任何类型的快速文本编辑的理想选择——例如对一组文件进行快速搜索和替换。事实上,它是现有用于文本编辑的最流行命令行工具之一。
sed 接受包含任何数量命令的脚本,后面跟着可选的指定输入文件的选项;缺省情况下,它读取标准输入。某些版本的 sed 有一个 -i 选项,此选项指定应该编辑的输入文件。(如果没有此选项,则读取输入文件,而不对其执行写入。)如果您安装的版本支持此选项,则应该使用它——它允许您使用单个命令对任何指定的文件执行快速编辑操作。
sed -i script filespec
以下示例假设您的 sed 支持 -i 选项。否则,您必须使用 Shell 重定向将输出保存到新文件,并在另一个步骤将新文件重命名为旧文件,从而执行临时文件中转:
sed script file > newfile; mv newfile file
对于多个文件,您必须执行循环:
for i in *; { sed script $i > $i.new; mv $i.new $i; }
替换文件中的文本
您可以使用 s/searchstring/replacestring/ 构造将给定字符串替换为另一个字符串。若要替换某个文件中每行上的第一个 old 实例,可以使用以下命令:
$ sed -i 's/old/new/' file
若要替换每个实例,可以对该搜索追加 g 选项。此项技术对于修复输入错误或替换一个或一组文件中的重复单词、短语或其他内容非常理想。
$ sed -i 's/Esclipse/Eclipse/g' *.xml
您可以在输入表达式中将字符包括在方括号中,但是,如果您在替换文本中使用方括号,则会将它们视为普通字符:
$ cat file
This is the beginning.
This is the middle.
This is the end.
$ sed 's/[Tt]h/[Tt]h/g' file
[Tt]his is [Tt]he beginning.
[Tt]his is [Tt]he middle.
[Tt]his is [Tt]he end.
当要搜索或替换的短语包括斜杠字符时,应使用它来定义新的分隔符:
$ sed -i 's,/usr/local/websphere,/usr/websphere,' file
您还可以将包含某个模式的整个行替换为某些新文本:
$ sed -i 's/.*pattern.*/LINE DELETED/' file
编辑匹配的模式
回想一下在模式中将字符分组在一起的方括号示例,以及如何在替换文本中将它们视为普通字符。如果您希望在替换文本中包括字面匹配的模式,该怎么办呢?可以使用“和”号 (&) 来实现。此方法对于通过在匹配模式之前或之后放置文本来编辑匹配模式是非常有用的:
$ cat file
This is the beginning.
This is the middle.
This is the end.
$ sed 's/[Tt]h/>&</g' file
>Th<is is >th<e beginning.
>Th<is is >th<e middle.
>Th<is is >th<e end.
在匹配模式之后插入文本
使用 a 命令在给定的匹配模式后面添加一行文本:
$ sed -i '/pattern/a text' file
这并不替换与模式匹配的文本——它只是在第一个包含该模式的行后面添加文本。
在行开头插入文本
若要在每行开头插入文本,可以匹配脱字号元字符并提供要插入的文本。下面显示了如何向文件中的所有行添加电子邮件样式引用:
$ sed 's/^/> /' input.txt
> This line has trailing blanks.
> This line does not.
$
在行尾插入文本
同样的原理也适用于在每行结尾插入文本——匹配美元符号元字符并提供要插入的文本。下面演示了如何模拟 AIX cat 的 -vet 选项来标记尾随空格:
$ sed 's/$/$/' file
This line has trailing blanks. $
This line does not.$
$
删除文件中的行
d 命令删除给定的行。您可以在它前面附加行号、范围、要匹配或包括在斜杠中的模式。
若要删除文件中的第一行,可以使用以下命令:
$ sed -i 1d file
若要删除第 1 至第 10 行,可以使用以下命令:
$ sed -i 1,10d file
若要删除“BEGIN QUOTE”字符串的第一个实例到“END QUOTE”字符串的第一个实例之间的所有行,可以使用以下命令:
$ sed -i '/BEGIN QUOTE/,/END QUOTE/d' file
若要删除当前目录中扩展名为 .xml 的所有文件中第一行包含“<record>”并且最后一行包含“"</record>"”的所有文本部分,可以使用以下命令:
$ sed -i '/<record>/,/<\/record>/d' *.xml
若要删除从第一行直到第一个空白行的所有内容,可以使用以下命令:
$ sed -i '/^> /d' file
(当在电子邮件消息或 Usenet 文章中使用时,前述单命令行程序将除去所有标头。)
若要删除所有以电子邮件样式引用开头的行,可以使用以下命令:
$ sed -i /^$/d file
若要删除文件的最后一行,可以使用以下命令:
$ sed -i '$d' file
删除尾随空格
如果文件中的行包含需要清除的尾随空格字符,在文本编辑器中人工查找并删除它们会非常麻烦,但是使用 sed 完成此任务将成为一个快速的单行操作。您可以搜索行尾之前出现一次或多次的字面空格字符,并将其替换为空字符:
$ cat -vet input.txt
This line has trailing blanks. $
This line does not.$
$ sed -i 's/ *$//' input.txt
$ cat -vet input.txt
This line has trailing blanks.$
This line does not.$
$
相关推荐
Matlab/simulink频率响应分析方法
Matlab/Simulink仿真系列问题一.电气模块与信号模块 一.电气模块与信号模块
linux sed 批量替换字符串
linux sed 批量替换字符串 一月 21, 2014 ( NO COMMENTS ) Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。 命令如下: sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` 例如:我要把 charset=gb2312 替换为 charset=UTF-8,执行命
Abel逆变换及其求解方法
Abel逆变换常应用在轴对称的、光学薄的火焰、羽流或等离子体重建。
sed过滤一般XML注释
sed 's///g' test.xml | sed -n '//!p'
AT32F421玩转AM32电调:手把手教你调试过零点比较器,告别电机抖动
本文详细介绍了如何使用AT32F421芯片调试AM32电调的过零点比较器,解决电机抖动问题。通过硬件配置、软件环境搭建、比较器电路原理分析及filter_level参数动态调整等实战步骤,帮助开发者精准诊断和优化电机控制性能。
基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真
本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。
shell sed中引用shell变量及空格表示方法
研究了一下午重要成功了,哈哈!下面说下题目中提到的问题 1,sed支持正则表达式,空格的表示方法[[:space:]] 2,利用-i选项可以直接修改原来文件,不必生成新文件 3,为了引入shell变量,必须使用双引号(很重要) 4,例子sed -i "s/\#*server[[:space:]]*$1/server $1/g" $2 将 server加若干空格加指定内容 前面的所
UDS自动化测试-Service 0x27(CAPL调用dll实现key计算)
相信读者基于Diagnostic/ISO TP Confighration中cdd、dll文件的测试并不陌生,本文基于其的基础上,介绍在capl中调用内置的函数diagGenerateKeyFromSeed实现27服务解锁,从而进行诊断自动化测试。本文基于4个byte的Seed、16个byte的Key的安全访问,实现27服务的自动化测试。需要加载项目使用的cdd文件,如果没有的情况下可以使用canoe例程中默认的cdd文件。
linux上sed的常用操作
linux上sed的常用操作
CUDA-GDB(11)——调试示例演练
本博客包含三个CUDA-GDB的演练示例: ▶ Example: bitreverse ▶ Example: autostep ▶ Example: MPI CUDA Application
OpenClaw实战系列10(完结篇):企业级应用实战案例——从0到1搭建智能客服系统
本文以一家跨境电商公司为例,从需求分析、系统设计、分步搭建到上线运营,完整呈现智能客服系统的落地全过程。所有配置命令和截图均来自实测环境,你可以直接复制使用。
sed常用方法
sed常用方法sed的几个参数打印指定行sed -n测试模式删除行d插入i(找到的行前添加)和追加a(找到的行后添加)替换 sed的几个参数 参考: https://zhuanlan.zhihu.com/p/134651377 a 追加,在指定行后添加一行或多行文本 d 删除指定的行 c 替换指定行 i 插入,在指定行前添加一行或者多行文本 p 打印模式空间内容,通常p会与选项-n一起使用 打印指定行sed -n # 打印第3行 sed -n '3p' filename # 打印
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
sed常用用法总结
sed命令的语法格式 sed的命令格式: sed [option] 'sed command'filename sed命令的选项(option) -n :只打印模式匹配的行 -e :直接在命令行模式上进行sed动作编辑,此为默认选项 -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作 -r :支持扩展表达式 -i :直接修改文件内容 常用的命令匹配模式 x x为行号 x,y 表示行号从x到y x~step x 指起始匹配行, step 指步
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
sed常用命令
sed -i就是直接对文本文件进行操作的。 sed -i 's/原字符串/新字符串/' filename sed -i 's/原字符串/新字符串/g' filename
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
Sed常用实例总结
【Sed简介】 sed是一个文件处理工具,本身是一个管道命令,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。sed以行为单位,一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区(模式空间),接着用sed命令处理缓冲区里的内容,处理完成后,把缓冲区里的内容送到屏幕,然后接着处理下一行,这样不断重复,直到文件末尾。其实文件内容并没有改变,除非使用了重定向输出...
sed常用简说
sed常用简说
sed 常用方法
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
linux sed命令 常用方法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会...
linux脚本中sed -i,Linux 中常用的sed命令
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反...
sed 常用命令
sed
linux sed命令常用操作
概述 sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”pattern space,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出 使用语法 sed命令的使用规则是这样的: sed[opt...
Linux生产环境上,最常用的一套“Sed“技巧
sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬 技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。 这里有篇更高级的:《...
Linux文件处理--sed 编辑器常用介绍及案例
sed awk编辑器 sed编辑器 sed工作流程主要包括读取、执行和显示三个过程 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并储存在临时的缓冲区(称为模式空间) 执行:默认情况下,所有sed命令 如果没有-n,会输出两遍 使用地址 打印奇数行:'p;n’在第一行打印后,自动跳到到下一行,第二次执行命令的时候是在第三行了 打印偶数行:'n;p’第一行直接空行,直接在第二行打印,第二次执行,直接跳到第三行,在第四行打印 由2开始,第二行n跳过,第三行p打
小猿圈Linux常用的sed命令
学习linux的你是不是总是忘记常用的文本处理命令呢,是不是总去找度娘呢,有的时候费劲力气也没有找到你想要的命令,今天小猿圈linux讲师为你总结了以下命令。 Linux 常用的文本处理命令:grep,sed(流编辑器),awk(报告文本生成器) sed 基本用法: sed : Stream EDitor 行编辑器(逐行处理文本) 全屏编辑器:vi sed: 模式空间 默认不编辑原文...
Linux 常用命令 - sed 【文本过滤处理】
sed 来源于 “stream editor” 的缩写,中文通常翻译为 “流编辑器”。它是一种强大的文本处理工具,可以在不打开文本编辑器的情况下对文本文件进行逐行分析和转换。sed 最初设计为一个行过滤器来处理来自输入流(例如,管道或文件)的一行一行的文本。通过编写脚本或直接在命令行中使用命令,sed 可以实现多种文本替换、删除、插入动作。
3万+



被折叠的 条评论
为什么被折叠?



