是否可以每三个数字用逗号分隔一个数字,并仅在Unix命令中进行四舍五入?
在以下CSV文件中:是否可以每三个数字用逗号分隔一个数字,并仅在Unix命令中进行四舍五入?,unix,csv,sed,command,Unix,Csv,Sed,Command,在以下CSV文件中: name, number, value Mike, 1000, 21.555522 Justin, 1001, 32.113 Josh, 1002, 998.2101 是否可以将其转换为以下文件 name number value Mike 1,000 21.6 Justin 1,001 32.1 Josh 1,002 998.2 请注意,第二个文件现在是制表符分隔的文件,因为第二列现在用逗号分隔,因此不能再用作CSV文件
name, number, value
Mike, 1000, 21.555522
Justin, 1001, 32.113
Josh, 1002, 998.2101
是否可以将其转换为以下文件
name number value
Mike 1,000 21.6
Justin 1,001 32.1
Josh 1,002 998.2
请注意,第二个文件现在是制表符分隔的文件,因为第二列现在用逗号分隔,因此不能再用作CSV文件。另外,我想将第三列的值四舍五入到一个小数点。我只想在Unix命令中处理这些任务,因为我不想为这样一个琐碎的问题编写Python代码。。。我假设cut
或sed
使其可行,但在搜索时没有得到任何答案。。。所以请帮我得到我想要的
谢谢
awk -F, 'NR==1 { printf "%s\t%s\t%s\n", $1, $2, $3 }
NR!=1 { printf "%s\t%'\''d\t%.1f\n", $1, $2, $3 }'
序列'\''
在格式字符串中嵌入一个引号<代码>%'d在输出中放入逗号
name number value
Mike 1,000 21.6
Justin 1,001 32.1
Josh 1,002 998.2
在Mac OS X 10.8.4上测试;YMMV。(数字和值标题上的奇数对齐是因为数据文件中逗号后有空格。)您尝试了什么?在搜索时,您应该更加努力:将字符串右键填充到80个字符()
sed-e:a-e的/^。\{1,80\}$/&;ta'
将逗号分隔的文件转换为制表符分隔的()tr'\t'',“逗号分隔的文件
插入千位分隔符()sed-r”:L;s=\b([0-9]+)([0-9]{3})\b=\1,2=g;谢谢。我得到了成功的结果。你是说\''
是awk中的单引号转义序列,而不是大多数编程语言中采用的\'
?事实上,不是。awk
脚本在(shell)单引号内。序列\''
停止当前单引号字符串(第一个'
),插入一个转义单引号(\'
),并启动一个新的(继续)单引号字符串(最后一个'
)。这是在单引号字符串中嵌入单引号的shell技巧。