linux - 在每个匹配的模式之后 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,
.....
整个想法不是在两者之间断线
谢谢
解决方案
您可以使用
sed -r 's/.{10}[^,]*,/&\n/g'
在线查看sed
演示。
模式.{10}[^,]*,
匹配
.{10}
- 任意 10 个字符[^,]*
- 0 个或更多字符,
,
- 一个逗号。
&\n
替换模式替换为整个匹配项 ( ) 并在其&
上附加一个换行符。
推荐阅读
- cuda - 64位线程分离共享内存最小化bank冲突的策略
- java - JMS如何读取队列中的多个文件
- applescript - “告诉应用程序'邮件'”将不接受来自 AppleScript-ObjC 应用程序中 IBOutlet 的字符串
- mysql - 保存 MySQL 空间数据 Google maps API Bounds
- r - 将时间序列分解为 R 中多个组的趋势、季节性和随机,以获取月度数据
- java - Java检查开始日期和结束日期是否在间隔内
- javascript - 将包装器添加到元素,然后读取 offsetTop 会返回错误的结果
- python - 如何在 Python 中最好地展平 NDJson 数据
- deployment - 谷歌云计算引擎无法部署
- maven - 是否应该在子 pom 或父 pom 中处理排除项?