Linux系统中sed命令在文件某行前后添加内容的用法
强大的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来输入。这一点需要特别注意。