Linux系统中sed命令在文件某行前后添加内容的用法

网络知识 2025-05-19 12:33www.1681989.comseo网站推广

强大的Sed工具在Lux环境中展现出其无与伦比的文本处理能力。今天,我在批量修改Tomcat日志时,深刻体会到了它的便捷性。

一、如何在某行的前一行或后一行添加内容呢?具体操作如下:

如果你想在匹配到的行前添加内容,可以使用:

```bash

sed -i '/toxgwang./i\.toxgwang.' the.conf.file

```

而在匹配到的行后添加内容,则使用:

```bash

sed -i '/toxgwang./a\.toxgwang.' the.conf.file

```

为了方便区分,通常在“i”和“a”前面加上一个反斜杠。例如,要在文件test.txt的特定行前或后添加内容,可以写成:

```bash

sed -i '//a\' test.txt

sed -i '//i\' test.txt

```

记住,“a”代表after,即在某行之后,“i”代表front,即在某行之前。官方man文件里的解释与此相符。

sed还可以与fd查找的内容处理相结合,例如:

```bash

fd . -name server.xml | xargs sed -i '/directory/i <!--'

fd . -name server.xml | xargs sed -i '/pattern="%h/a -->'

```

二、如果你想在某一具体行号(如第四行)前或后添加内容,可以使用以下命令:

```bash

sed -i 'N;4a\ddpdf' a.txt 在第四行后添加内容

sed -i 'N;4i\eepdf' a.txt 在第四行前添加内容

```

三. 删除指定行的上一行或下一行:

删除指定文件的上一行:

```bash

sed -i -e :a -e '$!N;s/.n(.directory)/1/;ta' -e 'P;D' server.xml

```

删除指定文件的下一行:

```bash

sed -i '/pattern="%/{n;d}' server.xml

```

这个操作写起来确实有些复杂,如果不是在shell环境下,我通常会选择使用vim进行处理。在vim中,如果替换内容包含特殊字符(如tab),需要在编辑模式下按特定的快捷键组合进行输入。例如,tab符号需要按ctrl+v和ctrl+I来输入。这一点需要特别注意。

Copyright © 2016-2025 www.1681989.com 推火网 版权所有 Power by