Linux shell编程学习笔记75:sed命令——沧海横流任我行(下)

紫郢剑侠 2024-08-30 08:37:03 阅读 93

 

0 前言

 在

Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)-CSDN博客文章浏览阅读684次,点赞32次,收藏24次。在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、选取等特定工作。在Linux中提供很多数据处理命令,如果我们要以行为单位进行数据处理,可以使用sed命令。

https://blog.csdn.net/Purpleendurer/article/details/141307421?spm=1001.2014.3001.5501中,我们研究了sed的基础知识。

Linux shell编程学习笔记74:sed命令——沧海横流任我行(中)-CSDN博客

icon-default.png?t=N7T8

https://blog.csdn.net/Purpleendurer/article/details/141369789?spm=1001.2014.3001.5501中,我们见识了sed删除和替换功能的威力。

现在我们通过一些实例来见识一下sed插入等功能的威力。

1 sed实列

1.1 插入行

1.1.1 前插

我们可以使用i命令(insert)来完成前插。 

1.1.1.1 在第3行、第4行前插入'abc'

命令为:

sed '3,4i\abc'

其中sed命令的参数说明如下:

3,4 :指定第3行、第4行

i:在前插入命令

\abc:要插入的字符串

<code>[purpleendurer @ bash ~] seq 7 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~] seq 7 | cat -n | sed '3,4i\abc'

1 1

2 2

abc

3 3

abc

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~]

1.1.1.2 在开头前插入'abc'

命令为:

sed -e '1i\abc'

其中sed命令的参数说明如下:

-e:解释脚本

1 :指定第1行

i:在前插入命令

\abc:要插入的字符串

<code>[purpleendurer @ bash ~] seq 7 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~] seq 7 | cat -n | sed -e '1i\abc'

abc

1 1

2 2

3 3

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~]

 

 

1.1.1.3 在所有包含1的行前插入'abc' 

命令为:

 sed  '/1*/i\abc'

<code>[purpleendurer @ bash ~] seq 11 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

11 11

[purpleendurer @ bash ~] seq 11 | cat -n | sed '/1*/i\abc'

abc

1 1

abc

2 2

abc

3 3

abc

4 4

abc

5 5

abc

6 6

abc

7 7

abc

8 8

abc

9 9

abc

10 10

abc

11 11

[purpleendurer @ bash ~]

 

 1.1.2 追加(后插)

我们可以使用a命令(append)来完成追加(后插)。 

1.1.2.1在第3行及其后2行后追加'abc'

命令为:

sed '3,+2a\abc'

<code>[purpleendurer @ bash ~] seq 7 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~] seq 7 | cat -n | sed '3,+2a\abc'

1 1

2 2

3 3

abc

4 4

abc

5 5

abc

6 6

7 7

[purpleendurer @ bash ~]

 

1.1.2.2 在末尾追加'abc'

命令为:

sed '$a\abc'

<code>[purpleendurer @ bash ~] seq 7 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

[purpleendurer @ bash ~] seq 7 | cat -n | sed '$a\abc'

1 1

2 2

3 3

4 4

5 5

6 6

7 7

abc

[purpleendurer @ bash ~]

1.1.2.3 在偶数行后追加2行信息,第1行是abc,第2行是def

命令为:

sed  '0~2a\abc\

def'

<code>[purpleendurer @ bash ~] seq 5 | cat -n

1 1

2 2

3 3

4 4

5 5

[purpleendurer @ bash ~] seq 5 | cat -n | sed '0~2a\abc\

def'

1 1

2 2

abc

def

3 3

4 4

abc

def

5 5

[purpleendurer @ bash ~]

 

1.1.2.4 在所有包含1的行后面追加abc

命令为:

 sed '/1/aabc'

 

<code>[purpleendurer @ bash ~] seq 10 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

[purpleendurer @ bash ~] seq 10 | cat -n | sed '/1/aabc'

1 1

abc

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

abc

[purpleendurer @ bash ~]

1.1.2.5 在只含有1个1的行后面追加abc 

命令为:

 sed '/1$/aabc'

<code>[purpleendurer @ bash ~] seq 10 | cat -n

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

[purpleendurer @ bash ~] seq 10 | cat -n | sed '/1$/aabc'

1 1

abc

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

[purpleendurer @ bash ~]

 

1.2 打印行号

我们可以使用等号(=)来代表行号。

命令为:

 sed  '='

 

<code>[purpleendurer @ bash ~] echo "aaa" > t.txt

[purpleendurer @ bash ~] echo "bbb" >> t.txt

[purpleendurer @ bash ~] echo "ccc" >> t.txt

[purpleendurer @ bash ~] cat t.txt

aaa

bbb

ccc

[purpleendurer @ bash ~] sed '=' t.txt

1

aaa

2

bbb

3

ccc

[purpleendurer @ bash ~]



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。