Bash技巧:移除JSON文本值中第一个\n\n之前的所有内容
解决方案
优先推荐:用jq处理(最可靠,适配JSON结构)
因为你的数据是JSON格式,用专门的JSON处理工具jq比sed/awk更稳妥,不会破坏JSON结构。执行以下命令即可批量修改所有条目的fr字段:
jq '.[].fr |= sub("^.*?\\n\\n"; "")' description6fr.json > modified_description6fr.json
命令说明:
.[].fr:遍历JSON数组中每个元素的fr字段|=:将修改后的结果赋值回原字段sub("^.*?\\n\\n"; ""):用正则非贪婪匹配从开头到第一个\n\n的所有内容,替换为空字符串,实现截去目标内容的效果
用sed的备选方案(仅适合简单场景)
如果一定要用sed,假设你的JSON中fr字段的内容是单行转义后的\n(如示例中的输出),可以先提取字段再处理:
cat description6fr.json | jq '.[].fr' | sed 's/^.*\\n\\n//'
注意:sed不理解JSON结构,如果你的JSON有复杂嵌套、多行内容或特殊字符,这种方法容易出错,不推荐用于大型JSON文件。
内容的提问来源于stack exchange,提问作者Arcturus
相关产品推荐
相关产品推荐

