如何将jq提取的JSON变量字符串按每两项拆分换行?
解决方法:将带引号的字符串按每两个元素分组换行
嗨,作为新手遇到这种字符串处理问题很正常,别担心!我给你几个简单易懂的方法来实现你的需求,不用复杂的语法就能搞定:
方法一:用xargs快速分组(最简洁)
xargs工具很适合处理这种空格分隔的参数,-n 2参数可以让它每两个元素输出一行。直接把变量内容传给它就行:
var='"Serge" "Haroche" "David J." "Wineland"' echo "$var" | xargs -n 2
运行后就能得到你想要的输出:
Serge Haroche David J. Wineland
注意:
echo后面一定要加双引号"$var",这样才能保留变量里原有的引号和空格结构,让xargs正确识别每个带引号的元素。
方法二:用awk实现(灵活可控)
如果你想更清楚地理解处理过程,awk的写法也很直观,它会把每个带引号的内容当作一个“字段”:
var='"Serge" "Haroche" "David J." "Wineland"' echo "$var" | awk '{ for (i = 1; i <= NF; i += 2) { print $i, $(i+1) } }'
NF是awk里的内置变量,代表当前行的字段总数- 循环从第1个字段开始,每次跳2个,打印当前字段和下一个字段,自动换行
为什么cut不行?
你之前用cut没成功,是因为cut主要是按固定字符数或单一分隔符(比如逗号、空格)切割,但你的元素里有内部空格(比如David J.),cut没法区分“元素之间的空格”和“元素内部的空格”,所以没法正确分组~
内容的提问来源于stack exchange,提问作者Haskell-newb
相关产品推荐
相关产品推荐

