标签: numeric-data

如何将浮点数转换为整数?

这是在 bash 中进行浮点到整数转换的正确方法吗?有没有其他方法?

flotToint() {
    printf "%.0f\n" "$@"
}
Run Code Online (Sandbox Code Playgroud)

bash numeric-data floating-point

62
推荐指数
4
解决办法
17万
查看次数

是否有一个 unix 命令可以给出两个数字的最小值/最大值?

我正在寻找一个命令来限制从stdin.

我为此编写了一个小脚本(欢迎批评),但我想知道是否没有针对此简单且(我认为)常见用例的标准命令。

我的脚本找到了两个数字中的最小值

#!/bin/bash
# $1 limit

[ -z "$1" ] && { echo "Needs a limit as first argument." >&2; exit 1; }

read number

if [ "$number" -gt "$1" ]; then
        echo "$1"
else
        echo "$number"
fi
Run Code Online (Sandbox Code Playgroud)

scripting numeric-data

54
推荐指数
6
解决办法
9万
查看次数

如何在shell脚本中比较程序的版本?

假设我想比较gcc版本以查看系统是否安装了最低版本。

为了检查gcc版本,我执行了以下操作

gcc --version | head -n1 | cut -d" " -f4
Run Code Online (Sandbox Code Playgroud)

输出是

4.8.5
Run Code Online (Sandbox Code Playgroud)

所以,我写了一个简单的if语句来检查这个版本与其他一些值

if [ "$(gcc --version | head -n1 | cut -d" " -f4)" -lt 5.0.0 ]; then
    echo "Less than 5.0.0"
else
    echo "Greater than 5.0.0"
fi
Run Code Online (Sandbox Code Playgroud)

但它抛出一个错误:

[: integer expression expected: 4.8.5
Run Code Online (Sandbox Code Playgroud)

我理解我的错误,我使用字符串进行比较并且-lt需要整数。那么,有没有其他方法可以比较版本?

version shell-script test numeric-data

21
推荐指数
2
解决办法
3万
查看次数

如何快速求和文件中的所有数字?

每行包含一列中的文本和数字。我需要计算每一行中数字的总和。我怎样才能做到这一点?谢谢

example.log 包含:

time=31sec
time=192sec
time=18sec
time=543sec
Run Code Online (Sandbox Code Playgroud)

答案应该是784

awk text-processing numeric-data

16
推荐指数
5
解决办法
9604
查看次数

Bash - 预期的整数表达式

我正在检查我的主题的更新脚本

我有 2 个文本文件。第一个称为“current.txt”并包含当前版本。4.1.1该文本文件中有字符串。

第二个称为“latest.txt”并包含最新版本。4.2此文本文件中有字符串。

所以这是代码

echo "Checking update";
x=$(cat ./current.txt)
y=$(cat ./latest.txt)
if [ "$x" -eq "$y" ]
then
       echo There is version $y update
else
       echo Version $x is the latest version
fi
Run Code Online (Sandbox Code Playgroud)

这意味着如果 current.txt 与 latest.txt 不同,那么它会说“有 4.2 版更新”。如果不是,它会说“版本 4.1.1 是最新版本”

但是当我尝试运行它时。我收到这个错误

Checking update
./test.sh: line 4: [: 4.1.1: integer expression expected
Version 4.1.1 is the latest version
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?

string shell-script test numeric-data

15
推荐指数
2
解决办法
7万
查看次数

comm: 文件没有按顺序排列

我曾经comm比较两个排序的文件。这些文件中的每一行都是正整数。但结果显示

comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
Run Code Online (Sandbox Code Playgroud)

即使这两个文件已排序,为什么会出现错误?

sort comm numeric-data

13
推荐指数
1
解决办法
1万
查看次数

如何阻止 Bash 解释八进制代码而不是整数?

我正在编写一个星座 RSS 脚本作为 Unix/Linux 项目的介绍,但遇到了一个问题,我的教授无法在我下课后留下来解决这个问题。由于我无法弄清楚如何使用实际日期作为要检查的内容,因此我想通过让用户输入为 MMDD 格式的标准数字来尝试基本算术。据他说,该脚本似乎将输入读取为八进制代码而不是整数。这是脚本的示例:

    elif [ "$olddate" -gt 1121 ] && [ "$olddate" -lt 1131 ] || [ "$olddate" -gt 1200 ] && [ "$olddate" -lt 1222 ]
then
echo "You are Sagittarius"
exit
elif [ "$olddate" -gt 1221 ] && [ "$olddate" -lt 1232 ] || [ "$olddate" -gt 0100 ] && [ "$olddate" -lt 0120 ]
then
echo "You are Capricorn"
exit
Run Code Online (Sandbox Code Playgroud)

这是最基本的,我拿出了RSS部分。“olddate”是我阅读提示中的预期输入。虽然 1121 到 1131、1200 到 1222 和 0100 到 0120 有效,但 1221 到 …

bash numeric-data printf

13
推荐指数
1
解决办法
4006
查看次数

如何对单行分隔项进行数字排序?

我有一行(或多行)由任意字符分隔的数字。我可以使用哪些 UNIX 工具按数字对每一行的项目进行排序,同时保留分隔符?

例子包括:

  • 号码列表;输入:10 50 23 42; 排序:10 23 42 50
  • IP地址; 输入:10.1.200.42; 排序:1.10.42.200
  • CSV;输入:1,100,330,42; 排序:1,42,100,330
  • 竖线分隔;输入:400|500|404; 排序:400|404|500

由于分隔符是任意的,请随意使用您选择的单字符分隔符提供(或扩展)答案。

sort numeric-data

13
推荐指数
6
解决办法
3676
查看次数

如何将(十进制)变量(前导零)的值增加 +1?

我有一个名为 Build.number 的文件,内容值为012,我需要将其增加 +1。所以,我试过这个

BN=$($cat Build.number)
BN=$(($BN+1))
echo $BN >Build.number
Run Code Online (Sandbox Code Playgroud)

但在这里,当我期待013时,我得到了值 11 。谁能帮我?

bash shell-script arithmetic numeric-data

13
推荐指数
2
解决办法
2819
查看次数

Grep 行以 1 开头,但不是 10、11、100 等

我有一个带有标签计数的基因组数据文件,我想知道一次代表了多少:

$ grep "^1" file |wc -l
Run Code Online (Sandbox Code Playgroud)

包括所有以 1 开头的行,因此它包括表示 10 次、11 次、100 次、1245 次等的标签。我该怎么做?

Current format
79      TGCAG.....
1       TGCAG.....
1257    TGCAG.....
1       TGCAG......
Run Code Online (Sandbox Code Playgroud)

我只想要以下几行:

1       TGCAG.....
Run Code Online (Sandbox Code Playgroud)

所以它不能包含以 1257 开头的行。注意:上面的文件是制表符分隔的。

linux grep numeric-data

11
推荐指数
5
解决办法
9952
查看次数