sed命令

网友投稿 1482 2022-08-30

sed命令

sed命令

windows下使用sed

windows下可以通过-sed.exe来实现​​​sed.exe​​

!!! 如果需要匹配特殊字符如引号则需要用反斜杠转义 !!! !!! 另外需要匹配空格时候需要用\s !!! !!! 需要替换的目标内容如果包含空格,则需要给整个模式字符串外侧添加双引号 !!!

例:

外侧包含双引号

s/后面包含"来转义双引号

:后面的\s表示匹配空格等字符

sed "s/"ApplicationIP":\s".*"/"ApplicationIP": "127.0.0.1"/g" appsettings.json

sed的常用选项:

选项

含义

-e

它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项

-f

后跟保存了sed指令的文件

-i

直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改

-n

取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行

sed中的编辑命令:

命令

含义

a-追加

向匹配行后面插入内容

i-插入

向匹配行前插入内容

c-更改

更改匹配行的内容

d-删除

删除匹配的内容

s-替换

替换掉匹配的内容

p-打印

打印出匹配的内容,通常与-n选项和用

=

用来打印被匹配的行的行号

n

读取下一行,遇到n时会自动跳入下一行

r,w

读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件

常用命令

# 2a 第二行后追加,追加内容为hellosed 2ahello test.txt# 保存修改 -ised -i 2ahello test.txt# /a 批量修改 在所有的hello后面追加一行testsed /hello/atest test.txt# /c 替换所有包含test的行为999sed /test/c999 test.txt# $a 尾行添加123sed $a123 test.txt# 1i 在第一行插入999sed 1i999 test.txt# /world/i 匹配行内容包含world然后在world前一行插入qwersed /world/iqwer test.txt# /world/c 匹配行内容包含world然后整行修改为qwersed /world/cqwer test.txt# 删除匹配内容的行sed /test/d test.txt# 删除指定行sed 2d test.txt# 根据步长删除,从第一行开始每隔两行删除一行sed 1~2d test.txt# 范围删除,从第一行删除到第三行sed 1,3d test.txt# 删除不匹配的行sed 1,3!d test.txt# 删除最后一行sed $d test.txt# 删除不包含test的行sed /test/!d test.txt# 删除匹配的行及下一行sed /test/,+1d test.txt# 删除从匹配的行到最后一行sed /test/,$d test.txt# 删除1-7行中匹配条件的行sed 1,7{/test/d} test.txt# 将test替换为xxx, s为替换模式-需要注意同一行如果有多个匹配的话默认只匹配第一个sed s/test/xxx/ test.txt# 将test替换为xxx, s为替换模式 g为全局替换,即匹配所有而不是只匹配第一个sed s/test/xxx/g test.txt# 在替换模式的基础上添加对行的过滤# 匹配#开头的行,将,开头的内容替换为###sed /#/s/,.*/###/g test.txt# 替换每行中最后两个字符sed s/..$/end/g test.txt# 替换以#开头的行为空行sed s/^#.*// test.txt# 输出指定行的内容, -n为取消默认输出sed -n 4p test.txt#打印文件中的第4行内容sed -n '4p' test.txt #从第二行开始,每隔两行打印一行,波浪号后面的2表示步长sed -n '2~2p' test.txt #打印文件的最后一行sed -n '$p' test.txt #打印1到3行sed -n '1,3p' test.txt #打印从第3行到最后一行的内容sed -n '3,$p' test.txt #逐行读取文件,打印匹配love的行sed -n '/love/p' test.txt #逐行读取文件,打印从匹配china的行到第3行的内容sed -n '/china/,3p' test.txt #打印第一行到匹配china的行sed -n '1,/china/p' test.txt #打印从匹配*的行到最后一行的内容sed -n '/\*/,$p' test.txt #打印匹配*的行及其向后一行,如果有多行匹配too,则匹配的每一行都会向后多打印一行sed -n '/\*/,+1p' test.txt #打印从匹配内容china到匹配内容*的行 sed -n '/china/,/\*/p' 1.txt # 输出最后一行行号sed -n $= test.txt# 输出匹配内容的行号sed -n /#/= test.txt# 查看匹配内容的行号和内容sed -n /test/{=;p} tst.txt

[参考]​​​sed 的基本使用​​​​sed 4.2.2 for Windows 单文件版​​​​sed入门详解教程​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Micro In Action(二):项目结构与启动过程(microsoft edge)
下一篇:rocky8忘记密码怎么重置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~