awk格式处理求助:保留首列,将后续列转为指定格式
问题描述
输入文件内容:
a x g b y h c z i
期望输出:
a ["x"] ["g"] b ["y"] ["h"] c ["z"] ["i"]
我尝试了以下awk代码,但每个列都显示在新行中,无法得到预期输出:
awk '{print $1;for (i = 1; i <= NF; ++i) printf "[\""$i"\"]"" ";print "" }'
解决方案
你的代码有两个问题:一是print $1会直接输出第一列并换行,二是循环从i=1开始会重复处理第一列,导致格式混乱。
修正后的awk代码如下:
awk '{printf "%s", $1; for(i=2; i<=NF; i++) printf " [\"%s\"]", $i; print ""}'
代码说明:
printf "%s", $1:输出第一列,不自动换行,保证后续内容跟在同一行for(i=2; i<=NF; i++):从第二列开始遍历,避免重复处理第一列printf " [\"%s\"]", $i:给每个后续列添加前置空格,并包裹在[""]中,保持同一行输出print "":每行处理完成后添加换行符,确保每行内容独立
运行这段代码即可得到你期望的输出格式。
内容的提问来源于stack exchange,提问作者pratheeksha lp
相关产品推荐
相关产品推荐

