我正在处理一个具有以下形式的文件:
"1999-01-04";1391.12;3034.53;66.515625;86.2;441.39
"1999-01-05";1404.86;3072.41;66.3125;86.17;440.63
"1999-01-06";1435.12;3156.59;66.4375;86.32;441
有时,有些值没有小数(例如441而不是441.0),我需要小数。如何编写一个脚本,以便添加所有整数.0以便它们成为浮点数?
答案 0 :(得分:5)
使用sed
sed 's/\(;[^\.]*\)\(;\|$\)/\1.00\2/g' file
只是一个简单的替换正则表达式。
"1999-01-04";1391.12;3034.53;66.515625;86.2;441.39
"1999-01-05";1404.86;3072.41;66.3125;86.17;440.63
"1999-01-06";1435.12;3156.59;66.4375;86.32;441.00
答案 1 :(得分:2)
将此awk
脚本另存为 awk.src :
BEGIN {
FS=";"
}
#
## MAIN Block
#
{
printf $1; printf FS;
for (i=2;i<=NF;i++) {
if ($i !~ "\\.") {
printf "%.1f", $i;
}
else { printf $i; }
if (i!=NF) {
printf FS;
}
else { printf "\n"; }
}
}
试一试:
$ awk -f awk.src < sample.txt
"1999-01-04";1391.12;3034.53;66.515625;86.2;441.39
"1999-01-05";1404.86;3072.41;66.3125;86.17;440.63
"1999-01-06";1435.12;3156.59;66.4375;86.32;441.0