[英]Sed/AWK search/replace string after every matched pattern
我有像json这样的变量数据 -
v={k1:v1,k2:v2,k3:v3,k4:v4,k5:v5,k6:v6,k7:v7,k8:v8};
其中键和值可以是任何值。 我需要在每10个字符之后将它分成多行...我做了
echo "${v}" | sed -r 's/.{10}/&\n/g'
这按照本身进行拆分。 但是现在我需要确保只有在每10个字符后找到逗号字符后才能进行拆分...因此输出应该有有意义的行..输出应该是..
k1:v1,k2:v2,
.....
整个想法不是介于两者之间的断裂线
谢谢
如果实际上你只是想在每个第二个逗号之后添加一个换行符,那么这就是GNU sed和其他一些seds:
$ echo "$v" | sed 's/,[^,]*,/&\n/g'
k1:v1,k2:v2,
k3:v3,k4:v4,
k5:v5,k6:v6,
k7:v7,k8:v8
或者这是所有shell中所有seds的可移植性:
sed 's/,[^,]*,/&\
/g'
或者使用任何awk:
awk '{gsub(/,[^,]*,/,"&\n")}1'
对不起,感谢您在这里反馈预期输出 -
{k1:v1,k2:v2,
k3:v3,k4:v4,
k5:v5,k6:v6,
k7:v7,k8:v8}
当发现在该模式之后添加新行时,规则应该查找前10个字符,然后是第一个逗号。 Wiktor代码snippt实际上做到了这一点。 但是,我很高兴看到以其他方式实现这一目标。 谢谢大家。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.