Shell awk输入字段分隔符,并打印由双引号包围的所有变量
我有一个变量的格式是“世界,亚洲,印度”,变量的长度不是恒定的和变化的。我想要的是我想要格式化变量如下 “世界”、“亚洲”、“印度” 变量没有变化Shell awk输入字段分隔符,并打印由双引号包围的所有变量,shell,Shell,我有一个变量的格式是“世界,亚洲,印度”,变量的长度不是恒定的和变化的。我想要的是我想要格式化变量如下 “世界”、“亚洲”、“印度” 变量没有变化 echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }' 变量没有变化 echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }' 输入: “世界、亚洲、印度” 地球、世界、欧洲、法国 输出: “世界”、“亚洲”、“印
echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }'
变量没有变化
echo $variable | awk 'BEGIN { OFS = "," } { $1 = $1; print }'
输入:
“世界、亚洲、印度”地球、世界、欧洲、法国 输出: “世界”、“亚洲”、“印度” “地球”、“世界”、“欧洲”、“法国”
我不会通过调整OFS的
来实现这一点,因为您仍然需要处理第一个和最后一个字段。只需遍历所有字段并用引号将其括起来。直截了当:
awk -v q='"' 'BEGIN{FS=OFS=","}{for(x=1;x<=NF;x++)$x=q $x q}7'
awk-vq='“'BEGIN{FS=OFS=“,”}{for(x=1;x我不会通过对OFS
进行tunning来完成,因为您仍然需要处理第一个和最后一个字段。只需遍历所有字段并用引号将其括起来。简单:
awk -v q='"' 'BEGIN{FS=OFS=","}{for(x=1;x<=NF;x++)$x=q $x q}7'
awk-v q=''''BEGIN{FS=OFS=“,”}{for(x=1;x这看起来更像是搜索和替换问题,而不是字段分隔符问题:
awk '{gsub(/,/, "\",\""); print}'
# or
sed 's/,/","/g'
我假设您的输入实际上已经有了前导和尾随引号,您只需要更改“内部”逗号。这看起来更像是搜索和替换问题,而不是字段分隔符问题:
awk '{gsub(/,/, "\",\""); print}'
# or
sed 's/,/","/g'
我假设您的输入实际上已经有了前导和尾随引号,您只需要更改“内部”逗号。我非常喜欢@Kent answer
我建议允许awk
使用$1=$1
进行解析
echo $variable | awk 'BEGIN{FS=",";OFS="\",\""}{$1=$1}1'
我真的很喜欢“肯特答案”
我建议允许awk
使用$1=$1
进行解析
echo $variable | awk 'BEGIN{FS=",";OFS="\",\""}{$1=$1}1'