我有一个格式为“ world,asia,india”的变量,变量的长度不是常数,并且会发生变化。我想要的是我要按如下所示格式化变量。
“世界”,“亚洲”,“印度”
echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }'
变量无变化
echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }'
变量无变化
输入:
“世界,亚洲,印度”
“地球,世界,欧洲,法国”
输出:
“世界”,“亚洲”,“印度”
“地球”,“世界”,“欧洲”,“法国”
答案 0 :(得分:0)
我不会通过修剪OFS
来做到这一点,因为您仍然必须处理第一个字段和最后一个字段。只需遍历所有字段并用引号将它们括起来即可。直接:
awk -v q='"' 'BEGIN{FS=OFS=","}{for(x=1;x<=NF;x++)$x=q $x q}7'
上面的行可以解决问题。
答案 1 :(得分:0)
这看起来更像是搜索和替换问题,而不是字段分隔符问题:
awk '{gsub(/,/, "\",\""); print}'
# or
sed 's/,/","/g'
我假设您输入的内容实际上已经有前后引号,并且您只需要更改“内部”逗号即可。
答案 2 :(得分:0)
我真的很喜欢@Kent答案。
我建议我们可以允许awk
用$1=$1
进行解析
echo $variable | awk 'BEGIN{FS=",";OFS="\",\""}{$1=$1}1'