请问怎么在shell脚本中,替换文件多行里面的指定字符串

如题:
aaa
123
123
123
123
123
eee
怎么匹配aaa~eee(开始结束字符串确定),然后替换123这样的

sed -i '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile

先匹配aaa,匹配到后执行大括号里的语句。

n 读取下一行

s/123/xyz/g  将123替换为xyz,全局替换,同一行中出现几次替换几次

:a 设定跳转标签a

/eee/!ba  若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环。若匹配到eee,则退出循环,sed重新对读入的每行匹配aaa。

由于sed没有加-n静默选项,所以默认对每行数据处理后都打印。

追问

非常感谢,不过请问为什么在mac上运行不通过,提示sed command iexpects \ followed by text

追答

osx没试过啊,我在ubuntu上试的。
可以运行命令然后给个报错的截图看看吗?

温馨提示:内容为网友见解,仅供参考
无其他回答

请问怎么在shell脚本中,替换文件多行里面的指定字符串
sed -i '\/aaa\/{:a;n;s\/123\/xyz\/g;\/eee\/!ba}' yourfile先匹配aaa,匹配到后执行大括号里的语句。n 读取下一行 s\/123\/xyz\/g 将123替换为xyz,全局替换,同一行中出现几次替换几次 :a 设定跳转标签a \/eee\/!ba 若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环。若匹配...

shell中文件字符串替换
答案:在Shell中,可以使用`sed`命令进行文件字符串替换。具体语法为:`sed -i 's\/原字符串\/新字符串\/g' 文件名`。详细解释:1. sed命令简介 `sed`是一个流编辑器,用于对文本文件进行非交互式处理。它可以对文件内容进行搜索、替换、删除、插入等操作。2. 字符串替换语法 `sed`命令中的替换语...

shell 中文件字符串替换
在Shell编程中,字符串替换操作可以通过一些特定的命令和技巧实现。例如,下面是一个脚本片段,它使用`grep`和临时文件来查找并替换文件中的'desc'字符串。首先,创建一个临时文件`tmp_desc`(通过`mktemp`命令),然后从输入文件中逐行读取,如果找到'desc',则使用`sed`替换并记录当前行号,否则直接输出...

巧用shell脚本批量替换字符串
基本思路:分为两步,一为文件查找,二为全文替换。先使用find命令查找所有包含关键字的文件,再使用sed工具进行全文替换。为降低风险,先进行模拟测试,使用临时目录复制部分文件及目录进行操作。撰写脚本:使用find、sed及for循环实现。脚本内容简洁,仅需执行这三条指令,具体代码在此省略。实施替换:分为...

Linux下的shell编程 如何替换文件中的内容
可以这样做:方法1:sed -i 's\/被替换的内容\/要替换成的内容\/' file 方法2:sed 's\/被替换的内容\/要替换成的内容\/g' file > file.out;mv file.out file。

如何在shell脚本中修改添加替换指定文件中的内容
1、启动Linux系统,用ssh工具连上Linux系统。2、bash自带了一些调试选项。3、在脚本启动时添加调试选项。来调试debug.sh。4、在脚本内添加调试选项,使用set 命令。5、现在要看debug.sh脚本执行的调试信息,就不需要使用bash -x .\/debug.sh执行了。6、在脚本开头添加-xv选项。7、同样现在执行.\/...

shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写?
根据位置替换即可:read ipsed -ri "\/subnet\/s\/(subnet )[^ ]+( netmask.*)\/\\1$ip\\2\/" \/mnt\/file\/subnet\/ - 先正则匹配到含有subnet的行,然后替换。替换的时候将不变的部分用小括号括起来,后面依次用\\1 , \\2 原封不动地引用回来。-r 选项用于支持扩展正则,这样就不需要额外的转义符...

shell中,什么命令可以替换文本中指定位置的字符? 比如说abc 替换成a...
如果位置固定,比如从字符串第四个字符开始,共3个字符,{变量:4:3} 是取得子字符串 {变量\/旧字串\/新字串} 是替换 两个结合起来,见上图例子 就是 把任意字符串中固定位置的字符改为想要的字符。也可以用其他方式,比如awk、perl、sed等 ...

shell脚本sed命令如何使用变量替换掉包含指定字符串的整行
sed "s\/zip\/$zip\/g" file sed双引号可以识别变量

linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面...
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。linuxshell中引号的使用方法:shell使用引号(单引号\/双引号)和反斜线("\\")用于向shell解释器屏蔽一些特殊字符,反引号(")对shell则有特殊意义。如:...

相似回答