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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed指定某行插入追加全局替换相关的知识,希望对你有一定的参考价值。

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


本文出自 “隐隐的泪” 博客,请务必保留此出处http://lijuntao.blog.51cto.com/11691147/1951236

以上是关于sed指定某行插入追加全局替换的主要内容,如果未能解决你的问题,请参考以下文章

sed多行模板替换

在没有换行符的情况下使用 sed 的追加/更改/插入

sed 怎样在文本里指定位置插入字符

打开高效文本编辑之门_Linux Sed插入追加转换退出等命令应用

sed基础语法

sed 在匹配行前后添加内容