shell中将字符串转换成数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中将字符串转换成数字相关的知识,希望对你有一定的参考价值。

我有一个字符串“96.56”,怎样才能将它转换成一个小数,或者是一个整数96也行。

1、数字类型转字符类型

数字类型转字符类型,是比较常见的,也是必须容易实现的。大多时候系统能够自动进行转换,如:

aa=$((1+1));echo $aa

变量aa赋值为整数2,但echo 输出时已被当成字符型。当然也可以强制进行转换,如:

echo $aa""

通过与空字符串进行连接,强化将变量aa转化成了字符型。

2、上面的方法也同样适用于各种浮点数类型转字符类型。如:

 aa=$(awk 'BEGINprint 7.01*5-4.01 ');

echo $aa;

echo $aa"";

变量aa是算式(7.01*5-4.01 )的值,是个浮点数,可看到成功转化成字符。

3、字符类型转数值类型

反过来,字符类型转数值类型也是可以实现的。

如:

aa=12;

aa=$(($a+4));

echo $aa;

在shell中,给变更赋值中的数字默认是被当作字符串的。

4、日期型转数值

日期型转数值主要是通过date命令来实现来的。

命令:date -d "2018-07-24" +%s

参数“%s”的作用是将-d参数后的日期转换成自UTC 时间 (1970-01-01 00:00:00) 以来所经过的秒数。

5、日期型转字符

要日期型转数值差不多,也是通过date命令来实现来的

date -d "2018-07-24 12:00:25" +%Y-%m-%d

将-d参数后的时间,按照“%Y-%m-%d”格式输入字符串。

6、数值转日期

日期型的转换,都可以通过date命令来完成。

 date -d @1538617600 +%Y-%m-%d

通过-d将自UTC 时间 (1970-01-01 00:00:00) 以来所经过的1538617600 秒后的时间以格式字符输出。

参考技术A

shell中无需转换,可以直接用作数字。

转换成整数:

# echo "96.56"| awk 'print int($0)'
96

追问

那如果我要将“.21”(这是从文件中读出来的,表示0.21)拿来与1比较大小,写在if判断中,我该怎么做?

追答

shell中的test语句只能用于整数判断,要判断小数用awk吧,awk中是C语言环境:

var=.21
var="0"$var
echo $var | awk 'if($0 < 1) print "Less than 1"; else print "No less than 1"'

本回答被提问者采纳

如何在python中将单引号字符串转换为数字[重复]

【中文标题】如何在python中将单引号字符串转换为数字[重复]【英文标题】:how to convert single quotes string to number in python [duplicate] 【发布时间】:2018-05-18 05:16:03 【问题描述】:

我有一些带单引号的字符串类型。例如,g

var = '2,000'
type(var) # <class 'str'>

我想把它转换成 int。

我试过int(var) 但它给出了一个错误

以 10 为底的 int() 的无效文字:'2,000'

【问题讨论】:

您的字符串中有一个,,您需要先删除它才能进行转换 看看这个问题:):***.com/questions/2953746/… 顺便说一句,当您写var = '2000' 时,您实际上在问题中撒谎,因为该字符串不会产生错误。当字符串为var = '2,000' 时会发生错误,因此您应该将其放在问题中。见How to create a Minimal, Complete, and Verifiable example 我是个白痴!!完全忽略了它。是的,它应该是“2,000”而不是“2000”,我已经在问题中更新了 【参考方案1】:

如果您的号码包含“,”,那么您应该使用它。

 > var = '2,000'
 > int(a.replace(',', ''))
 > 2000

其他的

 >  var = '2000'
 >  i = int(var)

【讨论】:

【参考方案2】:

我得到了这些结果:

var = '2000'
print(type(var)) # <class 'str'>
myInt = int(var)
print(type(myInt)) # <class 'int'>

那么您能否尝试并分享您的所有相关代码。

【讨论】:

【参考方案3】:

我认为您的错误消息显示您使用的是“2,000”而不是“2000” 尝试使用 str.replace 删除字符串中的逗号或任何字母

 int ("2,000,000".replace("," , ""))

【讨论】:

【参考方案4】:
var = '2000'

print(type(int(var)))

输出:

&lt;class 'int'&gt;

解释:

使用int 转换为integer

【讨论】:

不,不要使用eval()。有更简单、更安全的转换方法。 @IgnacioVazquez-Abrams:谢谢。我已经更新了

以上是关于shell中将字符串转换成数字的主要内容,如果未能解决你的问题,请参考以下文章

在sql中如何将字符串数字转换成数字?

JavaScript中将字符串类型转换为整形的函数

java中怎么将数字转换成字符串

python怎么把列表转换成字符串?

如何在python中将单引号字符串转换为数字[重复]

在Swift或Objective-C中将大型混合数字和文本数字转换为数字