所以以下变量
COMPRESSED
和UNCOMPRESSED
持有一个字母数字字符串(它们存储文件大小,所以像4K,2500MB等字符串)。我想对它们做一些代数(除法),同时使用sed删除字母(K,MB等),以便实际上能够分割。像这样:
RATIO=$((COMPRESSED| sed 's/[A-Za-z]*//g' / UNCOMPRESSED | sed 's/[A-Za-z]*//g'))
如果可能的话,毫无头绪。我只是想避免用变量堵塞我的脚本。谢谢!
编辑
输入:
./prog2.sh file.txt
< ---此文件将在脚本中压缩。 COMPRESSED
保留压缩大小,UNCOMPRESSED
保持未压缩大小。文件
预期产出:
ratio: $RATIO
< ---无论COMPRESSED/UNCOMPRESSED
的价值是多少(例如0.55或1/2或者这个数字是什么"
说COMPRESSED
= 2500MB,UNCOMPRESSED
= 43000MB。我想分割这些数字,但为了做到这一点,我必须删除字符串末尾的MB
,留下我2500
和4300
我想做的事情所以用代数序列中的sed来避免产生新的变量。
答案 0 :(得分:2)
如果您希望得到除compressed
和un-compressed
值,那么关注awk
可能会对您有所帮助。
awk -v comp="2500MB" -v un_comp="43000MB" 'BEGIN{print (comp+0)/(un_comp+0)}'
如果您有bash变量,并且想要将它们用于awk
,请使用以下内容:
compress="2500MB"
un_compress="4300MB"
awk -v comp="$COMP" -v un_comp="$un_compress" 'BEGIN{print (comp+0)/(un_comp+0)}'
或者,如果您想要通过压缩值除以未压缩值,那么您只能在上面的代码中更改除以部分。