Ubuntu Bash下如何在Fm前插入换行且不修改Fv/Fm原有格式
解决方法
这里提供两种实现方案,均可以避开Fv/Fm场景,只在其他位置的Fm前插入换行:
方案1:GNU Sed 正则扩展方案(Ubuntu默认环境直接可用)
利用GNU sed支持的Perl兼容正则零宽断言实现,写法更简洁:
sed -P -i 's/(?<!\/)Fm/\nFm/g' 你的目标文件名
- 参数说明:
-P:启用Perl正则语法支持,允许使用零宽断言(?<!\/):负向后行断言,仅匹配前面不是/的Fm,自动过滤Fv/Fm场景-i:直接修改原文件,测试时可先移除该参数查看输出是否符合预期
方案2:兼容POSIX标准的通用写法
无需依赖正则扩展,适配所有sed环境:
sed -i -e 's/^Fm/\n&/' -e 's/\([^/]\)Fm/\1\n&/g' 你的目标文件名
- 规则说明:
- 第一条规则匹配行首位置的
Fm,前面插入换行 - 第二条规则匹配前面不是
/的非行首Fm,插入换行 &代表匹配到的Fm字符串,避免重复书写
- 第一条规则匹配行首位置的
执行效果
对你提供的样例文本执行命令后,输出如下,完全符合需求:
Fo, 68 Fo, 55** Fm**, 328 Fv, 273 Fv/Fm, 0.832 PAR, TEMP, Fs, 65 Fm', 91 èPS2, 0.286,
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

