sed指定某行插入、追加、全局替换

分类:Linux

(1088)  (0)

有时候会有这样的需求,在指定的行后面或者是前面追加一行,这个时候可以使用sed来完成,具体用法如下

a\ 在指定的行后面追加一行

b\ 在指定的行前面追加一行

使用指定的行号追加内容,在使用行号的过程中,需要注意的问题有以下

N;后面只能使用偶数,且不可以为0

a表示在指定的行后面追加一行

i表示在当前行插入一行,如果指定行为4,其实最终的结果插入行的位置是第三行。

sed -i ‘N;2a\newline‘ 1.txt

sed -i ‘N;2i\newline‘ 1.txt

[[email protected] shell]# cat << eof > 1.txt

> a

> b

> c

> d

> eof

[[email protected] shell]# sed -i ‘N;2a2222‘ 1.txt

[[email protected] shell]# cat 1.txt

a

b

2222

c

d

[[email protected] shell]# sed -i ‘N;2i2222‘ 1.txt

[[email protected] shell]# cat 1.txt

2222

a

b

2222

c

d

[[email protected] shell]# cat 1.txt

1111

3333

[[email protected] shell]# sed -i ‘/^1111$/a\2222‘ 1.txt ; cat 1.txt

1111

2222

3333

[[email protected] shell]# sed -i ‘/^1111$/i\0000‘ 1.txt ; cat 1.txt

0000

1111

2222

3333

下面是把所有匹配的字符都替换为指定的字符

[[email protected] ~]# cat << eof > 1.txt

> 1111

> 222333333

> 44444444445

> eof

[[email protected] ~]# sed -i 2{s/2/3/g} 1.txt

[[email protected] ~]# cat 1.txt

1111

333333333

44444444445

[[email protected] ~]# sed -i 3{s/4/5/g} 1.txt

[[email protected] ~]# cat !$

cat 1.txt

1111

333333333

55555555555

时间: 2024-12-14 19:23:22

sed指定某行插入、追加、全局替换的相关文章

sed 指定行范围匹配(转)

sed -n '5,10{/pattern/p}' file sed是一个非交互性性文本编辑器,它编辑文件或标准输入 导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文件.sed可以随意编辑小或大的文件,有许多sed命令用来编辑. 删除,并允许做这项工作时不在现场.sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节 省了时间.sed必须通过行号和正则表达式指定要改变的文本行 sed怎样读取数据:sed从文件的一个文本行或从标准输入的几种格式中读取数

sed匹配多行并替换其中的内容

sed -i '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile 如题:aaa123123123123123eee怎么匹配aaa~eee(开始结束字符串确定),然后替换123这样的 先匹配aaa,匹配到后执行大括号里的语句. n 读取下一行 s/123/xyz/g  将123替换为xyz,全局替换,同一行中出现几次替换几次 :a 设定跳转标签a /eee/!ba  若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环.若匹配到eee,则退出循环,se

vim的全局替换

来自  本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容: 基本全局替换 确认替换 上下文相关替换 本文约定: $ + 命令 表示在普通的bash的命令行下 :  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入 ----------------------------------------------------------------------------------

学习vi和vim编辑器(8):全局替换(1)

本章学习vi编辑器中的全局替换命令.通过全局替换命令,可以自动替换文件中所有出现过的某个单词.全局替换一般会用到两个ex命令:":g"(global),":s"(substitute). 替换命令: 替换命令的语法如下: " :s/old/new/ ",该命令会将当前这一行中第一个出现的old模式替换为new.其中斜线用来分隔命令的各部分(如果斜线位于该命令的最后一个字符,则该斜线可以省略). " :s/old/new/g "

vim的全局替换[zz]&amp;把字符替换成回车

本文出自   http://blog.csdn.net/shuangde800 本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容: 基本全局替换 确认替换 上下文相关替换 本文约定: $ + 命令 表示在普通的bash的命令行下 :  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入 ----------------------------------------------

学习vi和vim编辑器(9):全局替换(2)

上一篇文章已经学习了如何通过vi编辑器中" :s "命令进行全局替换,而且可以在替换命令中使用正则表达式以进行强大的模式匹配.这一篇文章将学习模式匹配的更多范例,以进一步熟悉正则表达式. 模式匹配的范例: (1)匹配一个完整的单词:如下图所示,如果需要将文本里所有的child单词替换成为children,可能最先想到的就是下图所示的替换命令: 但是这个命令会把childrendish,Fabrichild这两个单词中的child都做替换,这不是我们想要的.替换的关键就是child要是一

JavaScript之jQuery-3 jQuery操作DOM(查询、样式操作、遍历节点、创建插入删除、替换、复制)

一.jQuery操作DOM - 查询 html操作 - html(): 读取或修改节点的HTML内容,类似于JavaScript中的innerHTML属性 文本操作 - text(): 读取或修改节点的文本内容,类似于JavaScript中的textContent属性 值操作 - val(): 读取或修改节点的value属性值,类似于 JavaScript 中的value值 属性操作 - attr(): 读取或者修改节点的属性 - removeAttr(): 删除节点的属性 二.jQuery操作

vim(5):全局替换

vim全局替换文件: 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" :表示从第1行到20行: "%" :表示整个文件,同"1,$": ". ,$" :从当前行到文件尾: s : 表示替换操作 [option] : 表示操作类型 如:g 表示全局替换; c 表示进行确认 p 表示替代结果逐行显示

vim全局替换命令

语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20” :表示从第1行到20行: “%” :表示整个文件,同“1,$”: “. ,$” :从当前行到文件尾: s : 表示替换操作 [option] : 表示操作类型 如:g 表示全局替换; c 表示进行确认 p 表示替代结果逐行显示(Ctrl + L恢复屏幕): 省略option时仅对每行第一个匹配串进行替换: 如果在源字