Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell awk输入字段分隔符,并打印由双引号包围的所有变量_Shell - Fatal编程技术网

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'