每个匹配的模式后,Sed/AWK搜索/替换字符串

CIG*_*EEK 2 linux bash awk sed

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

v={k1:v1,k2:v2,k3:v3,k4:v4,k5:v5,k6:v6,k7:v7,k8:v8}; 
Run Code Online (Sandbox Code Playgroud)

其中键和值可以是任何值.我需要在每10个字符之后将它分成多行...我做了

echo "${v}" | sed -r 's/.{10}/&\n/g'
Run Code Online (Sandbox Code Playgroud)

这按照本身进行拆分.但是现在我需要确保只有在每10个字符后找到逗号字符后才能进行拆分......所以out out应该有有意义的行..输出应该是..

k1:v1,k2:v2,
.....
Run Code Online (Sandbox Code Playgroud)

整个想法不是介于两者之间的断裂线

谢谢

Wik*_*żew 5

你可以用

sed -r 's/.{10}[^,]*,/&\n/g'
Run Code Online (Sandbox Code Playgroud)

sed在线观看演示.

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

  • .{10} - 任何10个字符
  • [^,]* - 0以外的字符 ,
  • , - 逗号.

&\n替换模式与整个匹配(取代&)并附加一个新行到它.