sed批量替换文件内容(sed替换某一行的特定内容)

概述

sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处理文本内容的。在shell中,使用sed来批量修改文本内容是非常方便的。


sed命令的选项

语法:sed [选项] [动作]

选项与参数:

function:

一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。


删除行

//test.txt 内容如下

sed '1,2d' test.xx
   

输出:

其中1,2d中的d表示删除,而d前面的表示删除的行的地址,而1,2表示一个地址范围,也就是删除第1行和第2行。地址范围的表示一般是 m,n 表示对m和n行之间的所有行进行操作,也包含第m行和第n行。


新增行

sed '1a hello world' test.txt
   

输出:

其中a命令表示在指定行的后面附加一行,1a则是在第一行的后面添加一行,添加的内容就是a后面的内容,如果a的前面没有地址限定则在所有行的后面都会添加指定的字符串

sed '1i hello world' test.txt
   

输出:

命令i表示在指定的行的前面插入一行,插入的内容为其后面的字符串


替换行

sed '1c hello world' test.txt
   

输出:

命令c会替换指定的行的所有内容,替换成其后面的字符串,所有的新增,删除,替换行,这些命令前面的地址修饰都可以指定地址空间,也都可以使用正则表达式,命令会应用在选出的符合地址条件的所有行上面,例如:

sed '/^2/c hello world' test.txt
   

输出:

替换以2开头的行,其内容是c命令后面的字符串


替换部分字符串而不是整行

sed中除了上面的命令是针对整行进行操作的之外,还提供一个替换命令,该命令对某一行中的部分字符串进行操作,下面举一个简单的例子,还是同样的文本内容,执行下面的命令:

sed 's/aa/AA/' test.txt
   

输出:

s命令后面接的3个斜杠分隔的两串字符串,其含义是 s/待替换的字符串/新字符串/ 也就是说使用后面的 AA 替换文件中出现的前面的 aa 。实际上这里的替换仅仅替换每一行遇到的第一个aa,


将修改应用到文件中

我们之前做的所有实验,实际上都没有修改test.txt文件的内容,也就是说我们看到的修改结果仅仅输出到控制台上,而文件test.txt的内容是没有修改的,我们可以使用 -i 选项告诉sed直接修改文件的内容,而不是将修改结果输出到终端上,例如:

sed -i '2d' test.txt
   

命令运行之后,我们发现test.txt的第2行没有了


sed正则中的元字符

我们知道sed中的命令前面可以使用地址范围进行限制,表示对文件的某些符合条件的行执行相应的操作,其中我们可以使用正则表达式选出要操作的行,而sed中正则的语法可能与我们其他命令的正则语法有一些不同,这里我们有必要列出sed中常用的正则元字符:

$ 表示行尾 
^ 表示行首
[a-z0-9]表示字符范围
[^]表示除了字符集中的字符以外的字符 
sed的正则中 \(\) 和 \{m,n\} 需要转义 
. 表示任意字符 
* 表示零个或者多个 
\  一次或多次 
\? 零次或一次 
\| 表示或语法
   

篇幅有限,关于sed命令就介绍到这了,建议大家多敲熟悉一下。后面小编会分享更多运维干货,感兴趣的朋友走一波关注哩~

(0)

相关推荐

  • linux下perl,sed,shell批量替换文件内容

    方法1: 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的 ...

  • linux下批量替换文件内容的方法

    对于单个文件,使用sed命令很容易做到。如果需要替换某个指定文件夹下所有文件,借助grep和sed组合成一条命令也可以轻松搞定。 grep命令可以查找单个文件或文件夹下文件中的内容,使用参数“r”或“ ...

  • linux下批量替换文件中的内容

    grep命令可以查找单个文件或文件夹下文件中的内容,使用参数“r”或“-R”可以递归查找指定文件夹下的所有文件;参数“l”可以让grep输出包含指定字符串的文件名,首次匹配成功后立刻停止对同文件的查询 ...

  • 批量替换文件内容的方法

    批量替换文件内容的方法 修改文件时常常会遇到需要将某些相同的字符 替换修改成另一个相同的字符 (比如将网站源码中的网址修改成自己的网址 ) 一个一个的去改 肯定会很麻烦 .如果能做到批量修改那就简单多 ...

  • 如何批量替换文件名称的一部分(如何批量替换文件名称中的字)

    怎么处理文件,比如将多个文件名中的部分文字替换成其他的,该如何操作呢?不知道的宝贝们,下面请随小编一起来试试.所需工具安装一个文件批量改名高手文件素材若干操作步骤将准备好的各个文件素材都存放在同一个文 ...

  • XP系统提示"正常运行Windows所需的文件已被替换..."如何解决

    方法如下: 1.插入系统安装光盘,并运行sfc /scannow命令检测并修复可能受损坏和更改的系统文件. 2.在"开始→运行"对话框中键入"gpedit.msc&quo ...

  • XP系统开机提示正常运行Windows所需的文件已被替换成无法识别的版本的解决方法

    有位XP系统用户反馈自己按了F11系统还原了,可是开机后遇到提示“正常运行 Windows所需的文件已被替换成无法识别的版本,要保持系统的稳定,Windows必须还原这些文件的原有版本.现在插入您的W ...

  • word2010批量将软回车箭头替换成车硬回车符号

    介绍word2010如何快速批量的将软回车箭头替换车硬回车换行符号,以供参考. 操作方法 01 如图中word文档中的换行回车符号都是箭头,即软回车. 02 如果想快速将软回车快速批量的替换成硬回车符 ...

  • WPS表格中,如何替换表格中某些特定内容?

    在制作WPS表格的时候,由于工作的要求,我们需要将表格中的某些特定内容替换.这是怎么操作的呢?其具体操作步骤如下: 操作方法 01 在桌面上双击WPS表格的快捷图标,打开WPS表格这款软件,进入其操作 ...