有没有简单的方法如何将一个文件中的浮点数整圆为相等长度?该文件不仅包含其他文本数字。将Bash中的文件中的所有数字均等化为相等长度?
before: bla bla bla 3.4689 bla bla bla 4.39223 bla.
after: bla bla bla 3.47 bla bla bla 4.39 bla.
感谢
有没有简单的方法如何将一个文件中的浮点数整圆为相等长度?该文件不仅包含其他文本数字。将Bash中的文件中的所有数字均等化为相等长度?
before: bla bla bla 3.4689 bla bla bla 4.39223 bla.
after: bla bla bla 3.47 bla bla bla 4.39 bla.
感谢
猛砸
#!/bin/bash
shopt -s extglob
while read -r line
do
set -- $line
for((i=1;i<=${#};i++))
do
s=$(eval echo \${${i}})
case "$s" in
+([0-9]).+([0-9])) s=$(printf "%.2f " $s);;
esac
printf "%s " $s
done
echo
done <"file"
输出
$ cat file
bla1 bla 2 bla 3.4689 bla bla bla 4.39223 bla.
words ..... 2.14 blah blah 4.5667 blah
$ ./shell.sh
bla1 bla 2 bla 3.47 bla bla bla 4.39 bla.
words ..... 2.14 blah blah 4.57 blah
awk BEGIN{RS="[[:space:]]"} /[0-9].[0-9]/{printf("%.2f%s",$1,RT)} !/[0-9].[0-9]/{printf("%s%s",$1,RT)} f.txt
你可能想改变RS的东西,可以处理更强大的集的词界限。该解决方案具有保留边界的优点,而不仅仅是重新打印由空格分隔的输出。
你是否有机会史蒂夫伯恩:)你看起来像壳超级大师.. ++ btw :) – gameover 2010-04-24 16:17:36