You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell或Awk中拆分含引号的行并格式化存储到数组?

这题我熟!不管用awk还是sed(Shell工具链里的常用命令)都能轻松搞定,给你几个实用的方案:

方案1:用Awk处理

如果是直接处理单行字符串,你可以用管道把字符串传给awk,用gsub做全局替换:

echo '"id":BinData(3,"dUpxQ3s018I0ijzNKWF+mQ=="),"id":BinData(3,"dUpxQ3s018I0ijzNKWF+lw==")' | awk '{gsub(/\),\"id\":/, ") \"id\":"); print}'

如果是处理文件里的内容(比如input.txt),直接把文件名传给awk就行,还能重定向到新文件保存结果:

awk '{gsub(/\),\"id\":/, ") \"id\":"); print}' input.txt > output.txt

原理很简单:用gsub匹配),\"id\":这个模式(也就是前一个条目结尾的)加上分隔用的,\"id\":),把它替换成) \"id\":,把逗号换成空格就达到你要的数组格式了。

方案2:用Sed处理

Sed做字符串替换更轻量,一行命令就能搞定:
处理单行字符串:

echo '"id":BinData(3,"dUpxQ3s018I0ijzNKWF+mQ=="),"id":BinData(3,"dUpxQ3s018I0ijzNKWF+lw==")' | sed 's/),\"id\":/) \"id\":/'

如果你的文本里有多个这样的逗号分隔条目,加上g参数做全局替换:

echo '多个条目字符串' | sed 's/),\"id\":/) \"id\":/g'

处理文件的话同样直接传文件名:

sed 's/),\"id\":/) \"id\":/g' input.txt > output.txt

这两个方案都能精准把你要的逗号换成空格,生成符合要求的格式~

内容的提问来源于stack exchange,提问作者shivam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:59:41