sed 追加命令 a

追加 操作是在一段文本后面紧贴着另一段文本。

例如在 简单教程 后面追加 简单编程 那么 简单教程 就会变成 简单教程简单编程

sed 追加命令 a

sed 程序也有 追加操作,它使用单字母 a 命令来实现。

单字母 aappend 的缩写,后者是 附加/追加 的意思。

a 命令把一段文本 追加模式缓冲区 里的数据后面。

但这个 追加 并不是简单的附加在后面,而是在 模式缓冲区 数据后面先追加 换行符 然后在追加数据。

比如模式缓冲区里原有数据为 简单教程,如果要追加 简单编程,那么追加操作之后,模式缓冲区里的文本会变成 简单教程\n简单编程

从某些方面说,sed 的追加操作是在新行追加。

追加命令 a 语法格式

[address] a append_text
  • address 是选填的,用于指定把数据追加到指定的行后面。如果不填则数据会追加到每一行。
  • append_text 是要追加的文本。

范例1:指定行后面追加新行

范例开始前,我们先准备下数据,现在当前目录下创建一个文件 data.txt 内容如下

1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学

如果我们需要在第 4 行后面追加 7) 小陈,22岁,哈工大,可以使用下面的命令

[www.twle.cn]$ sed '4 a 7) 小陈,22岁,哈工大' data.txt

命令运行结果如下

1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
7) 小陈,22岁,哈工大
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学

注意

苹果电脑自带的 sed 命令会报错: sed command a expects \ followed by text

解决办法请参考 苹果电脑 macOS sed command a expects \ followed by text 错误

上面这个命令中 4 表示行号,a 是追加命令,剩余的部分则是要追加的文本。

范例2: 文件末尾添加新行

如果需要再文件末尾添加新行,可以使用 美元 $ 表示行号。

例如下面的命令,在文件末尾追加 7) 小陈,22岁,哈工大

[www.twle.cn]$ sed '$ a 7) 小陈,22岁,哈工大' data.txt

运行结果如下

1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学
7) 小陈,22岁,哈工大

范例3: 指定匹配模式后追加数据

除了可以使用 行号,我们还可以使用 模式 来寻址行。

下面的命令,在包含 小王 的行后面追加 7) 小陈,22岁,哈工大

[www.twle.cn]$ sed '/小王/ a 7) 小陈,22岁,哈工大' data.txt

运行结果如下

1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
7) 小陈,22岁,哈工大
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学

范例4: 每行后面都追加

如果我们不指定行号,那么 sed 的 a 命令会在每行后面都追加数据

例如下面的命令,会在每行后面都追加 7) 小陈,22岁,哈工大

[www.twle.cn]$ gsed 'a 7) 小陈,22岁,哈工大' data.txt

运行结果如下

1) 小明,23岁,北京大学
7) 小陈,22岁,哈工大
2) 小红,22岁,清华大学
7) 小陈,22岁,哈工大
3) 小李,25岁,斯坦福大学
7) 小陈,22岁,哈工大
4) 小王,22岁,清华大学
7) 小陈,22岁,哈工大
5) 小刚,27岁,北京大学
7) 小陈,22岁,哈工大
6) 小英,21岁,哈佛大学
7) 小陈,22岁,哈工大

习题

  1. 你知道下面命令的运行结果是什么吗?

    gsed '/北京大学/ a 7) 小陈,22岁,哈工大' data.txt
    
  2. 你知道要如何写命令才会输出下面的文本嘛?

    1) 小明,23岁,北京大学
    7) 小陈,22岁,哈工大
    2) 小红,22岁,清华大学
    3) 小李,25岁,斯坦福大学
    4) 小王,22岁,清华大学
    5) 小刚,27岁,北京大学
    7) 小陈,22岁,哈工大
    6) 小英,21岁,哈佛大学
    7) 小陈,22岁,哈工大
    
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.