sed命令

windows下使用sed

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

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

例:

外侧包含双引号

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

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

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

windows下包含转义字符\时,有时候需要转义,可以将\替换位\, 脚本为 set autoinstallPath=%autoinstallPath:=\%

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 第二行后追加,追加内容为hello
sed 2ahello test.txt


# 保存修改 -i
sed -i 2ahello test.txt


# /a 批量修改 在所有的hello后面追加一行test
sed /hello/atest test.txt


# /c 替换所有包含test的行为999
sed  /test/c999 test.txt


# $a 尾行添加123
sed $a123 test.txt


# 1i 在第一行插入999
sed 1i999 test.txt


# /world/i 匹配行内容包含world然后在world前一行插入qwer
sed /world/iqwer test.txt


# /world/c 匹配行内容包含world然后整行修改为qwer
sed /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入门详解教程

posted @ 2022-08-03 15:46  Hey,Coder!  阅读(536)  评论(0编辑  收藏  举报