以下值存在于文件
中A|0001|.00|xyz|.00
B|0002|1.00|xyz|.00
C|0003|12.43|xyz|.00
我希望输出文件中的值为
A|0001|0.00|xyz|0.00
B|0002|1.00|xyz|0.00
C|0003|12.43|xyz|0.00
如何实现这一目标?
答案 0 :(得分:2)
假设您要将这些列中的数字标准化为始终具有整数和两位有效数字,则应该按照您的要求执行此操作:
awk -v FS=\| -v OFS=\| '{$3=sprintf("%.2f", $3); $5=sprintf("%.2f", $5)}7' file
$ cat file
A|0001|.00|xyz|.00
B|0002|1.00|xyz|.00
C|0003|12.43|xyz|.00
D|0004|.54|xyz|1
$ awk -v FS=\| -v OFS=\| '{$3=sprintf("%.2f", $3); $5=sprintf("%.2f", $5)}7' file
A|0001|0.00|xyz|0.00
B|0002|1.00|xyz|0.00
C|0003|12.43|xyz|0.00
D|0004|0.54|xyz|1.00
答案 1 :(得分:1)
通过perl,
$ perl -pe 's/\B(?=\.)/0/g' file
A|0001|0.00|xyz|0.00
B|0002|1.00|xyz|0.00
C|0003|12.43|xyz|0.00
通过sed,
$ sed -r 's/\|\./|0./g' file
A|0001|0.00|xyz|0.00
B|0002|1.00|xyz|0.00
C|0003|12.43|xyz|0.00
答案 2 :(得分:0)
这是另一个awk
awk -F\| '$3~/^\./ {$3="0"$3} $5~/^\./ {$5="0"$5}1' OFS=\| file
A|0001|0.00|xyz|0.00
B|0002|1.00|xyz|0.00
C|0003|12.43|xyz|0.00