首页 > 解决方案 > 在每个匹配的模式之后 Sed/AWK 搜索/替换字符串

问题描述

我有像json这样的变量数据-

v={k1:v1,k2:v2,k3:v3,k4:v4,k5:v5,k6:v6,k7:v7,k8:v8}; 

其中 key 和 value 可以是任何值。我需要在每 10 个字符之后将其分成多行……我这样做了

echo "${v}" | sed -r 's/.{10}/&\n/g'

这会根据 sed 进行拆分。但现在我需要确保仅在每 10 个字符后找到逗号字符后才发生拆分......这样输出应该有有意义的行......输出应该是......

k1:v1,k2:v2,
.....

整个想法不是在两者之间断线

谢谢

标签: linuxbashawksed

解决方案


您可以使用

sed -r 's/.{10}[^,]*,/&\n/g'

在线查看sed演示

模式.{10}[^,]*,匹配

  • .{10}- 任意 10 个字符
  • [^,]*- 0 个或更多字符,
  • ,- 一个逗号。

&\n替换模式替换为整个匹配项 ( ) 并在其&上附加一个换行符。


推荐阅读