如何使用sed匹配line1_shortname行,保留行首空格与6位数字删除冗余内容
sed 实现指定行内容修改方案
你可以使用以下sed命令完成需求,该命令会保留行首所有空白,仅处理包含line1_shortname:的行:
sed -E '/line1_shortname:/ s/([[:digit:]]{6})[^"]+"/\1"/' 目标文件路径
命令逻辑说明
/line1_shortname:/匹配规则:仅对包含该字符串的行执行替换操作- 替换规则
s/([[:digit:]]{6})[^"]+"/\1"/:- 首先捕获行内出现的6位连续数字,存入分组1
- 匹配6位数字之后、下一个双引号之前的所有非双引号内容,连带匹配到的双引号
- 替换为「分组1的6位数字+双引号」,实现删除中间多余内容的效果
- 命令全程不触碰行首到6位数字之前的内容,因此会完整保留所有行首空白
不同环境原地修改文件的命令
如果需要直接修改原文件,可根据运行环境添加-i参数:
- Linux 环境:
sed -Ei '/line1_shortname:/ s/([[:digit:]]{6})[^"]+"/\1"/' 目标文件路径 - macOS 环境:
sed -Ei '' '/line1_shortname:/ s/([[:digit:]]{6})[^"]+"/\1"/' 目标文件路径
注意:建议先不加-i参数运行命令,确认终端输出的修改结果符合预期后,再添加-i参数执行原地修改,避免误改文件
内容的提问来源于stack exchange,提问作者Bucky101
相关产品推荐
相关产品推荐

