如何用sed命令移除特定字符串"CidrIp": "0.0.0.0/0"两侧的大括号?
移除
"CidrIp": "0.0.0.0/0"周围大括号的sed命令方案 没问题,我来帮你搞定这个需求!要精准移除仅包裹"CidrIp": "0.0.0.0/0"的大括号,这里有几个适配不同格式场景的sed命令方案,你可以根据自己的实际情况选择:
场景1:大括号和目标字符串在同一行
如果你的文本是类似{ "CidrIp": "0.0.0.0/0" }这种同一行的格式,用这个命令就能直接替换:
sed -E 's/\{[[:space:]]*"CidrIp": "0.0.0.0\/0"[[:space:]]*\}/"CidrIp": "0.0.0.0\/0"/g' inputfile
- 命令说明:
[[:space:]]*会匹配大括号和目标字符串之间可能存在的任意空格(包括空格、制表符),保证适配不同的排版格式;g表示全局替换所有符合条件的内容。
场景2:大括号和目标字符串分多行
如果你的文本是多行格式,比如:
{ "CidrIp": "0.0.0.0/0" }
可以用这个多行匹配的sed命令:
sed -E '/\{[[:space:]]*$/,/^[[:space:]]*\}/ { /\{/d; /\}/d; }' inputfile
- 命令说明:
/\{[[:space:]]*$/,/^[[:space:]]*\}/会匹配从以{结尾(后面允许空格)的行,到以}开头(前面允许空格)的行这个范围;然后在这个范围内删除包含{和}的行,只保留中间的目标字符串行。
额外提示
如果需要直接修改原文件(而不是输出到终端):
- GNU sed(Linux环境):在命令里加上
-i参数,比如sed -i -E 's/.../' inputfile - BSD sed(macOS环境):需要写成
sed -i '' -E 's/.../' inputfile(注意-i后面的空字符串参数)
内容的提问来源于stack exchange,提问作者Akshay1424
相关产品推荐
相关产品推荐

