bat命令修改ini⽂件内容_如何⽤sed命令来批量替换⽂件内容概述
sed命令是⼀个⾯向字符流的⾮交互式编辑器,也就是说sed不允许⽤户与它进⾏交互操作。sed是按⾏来处理⽂本内容的。在shell中,使⽤sed来批量修改⽂本内容是⾮常⽅便的。
批处理文件怎么做
sed命令的选项
语法:sed [选项] [动作]
选项与参数:
function:
⼀般function的前⾯会有⼀个地址的限制,例如 [地址]function,表⽰我们的动作要操作的⾏。
删除⾏
// 内容如下
sed '1,2d'
输出:
其中1,2d中的d表⽰删除,⽽d前⾯的表⽰删除的⾏的地址,⽽1,2表⽰⼀个地址范围,也就是删除第1⾏和第2⾏。地址范围的表⽰⼀般是m,n 表⽰对m和n⾏之间的所有⾏进⾏操作,也包含第m⾏和第n⾏。
新增⾏
sed '1a hello world'
输出:
其中a命令表⽰在指定⾏的后⾯附加⼀⾏,1a则是在第⼀⾏的后⾯添加⼀⾏,添加的内容就是a后⾯的内容,如果a的前⾯没有地址限定则在所有⾏的后⾯都会添加指定的字符串
sed '1i hello world'
输出:
命令i表⽰在指定的⾏的前⾯插⼊⼀⾏,插⼊的内容为其后⾯的字符串
替换⾏
sed '1c hello world'
输出:
命令c会替换指定的⾏的所有内容,替换成其后⾯的字符串,所有的新增,删除,替换⾏,这些命令前⾯的地址修饰都可以指定地址空间,也都可以使⽤正则表达式,命令会应⽤在选出的符合地址条件的所有⾏上⾯,例如:
sed '/^2/c hello world'
输出:
替换以2开头的⾏,其内容是c命令后⾯的字符串
替换部分字符串⽽不是整⾏
sed中除了上⾯的命令是针对整⾏进⾏操作的之外,还提供⼀个替换命令,该命令对某⼀⾏中的部分字符串进⾏操作,下⾯举⼀个简单的例⼦,还是同样的⽂本内容,执⾏下⾯的命令:
sed 's/aa/AA/'
输出:
s命令后⾯接的3个斜杠分隔的两串字符串,其含义是 s/待替换的字符串/新字符串/ 也就是说使⽤后⾯的 AA 替换⽂件中出现的前⾯的 aa
。实际上这⾥的替换仅仅替换每⼀⾏遇到的第⼀个aa,
将修改应⽤到⽂件中
我们之前做的所有实验,实际上都没有修改⽂件的内容,也就是说我们看到的修改结果仅仅输出到控制台上,⽽⽂件的内容
是没有修改的,我们可以使⽤ -i 选项告诉sed直接修改⽂件的内容,⽽不是将修改结果输出到终端上,例如:
sed -i '2d'
命令运⾏之后,我们发现的第2⾏没有了
sed正则中的元字符
我们知道sed中的命令前⾯可以使⽤地址范围进⾏限制,表⽰对⽂件的某些符合条件的⾏执⾏相应的操作,其中我们可以使⽤正则表达式选
出要操作的⾏,⽽sed中正则的语法可能与我们其他命令的正则语法有⼀些不同,这⾥我们有必要列出sed中常⽤的正则元字符:
$ 表⽰⾏尾 ^ 表⽰⾏⾸[a-z0-9]表⽰字符范围[^]表⽰除了字符集中的字符以外的字符 sed的正则中 () 和 {m,n} 需要转义 . 表⽰任意字符 * 表⽰零个或者多个 + ⼀次或多篇幅有限,关于sed命令就介绍到这了,建议⼤家多敲熟悉⼀下。后⾯⼩编会分享更多运维⼲货,感兴趣的朋友⾛⼀波关注哩~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。