标签: numeric-data

diff 是否可以显示数值差异,并设置一个不将其显示为差异的阈值?

我的差异显示了两个日志文件之间的一些数字差异。这意味着例如:

fileA: 

        Parameter            n (fill abs)
        /All_Data/Height     9830400

fileB: 

        Parameter            n (fill abs)
        /All_Data/Height     9830500
Run Code Online (Sandbox Code Playgroud)

所以,如果diff命令在文件之间执行:

% diff fileA fileB
-> 
< /All_Data/Height     9830400
---
> /All_Data/Height     9830500
Run Code Online (Sandbox Code Playgroud)

我想在 diff 命令中设置一个阈值,意思是

  1. 如果数字之间的差异大于 ,则显示差异500。所以9830400-9830500=100。不应显示任何差异。

diff file-comparison numeric-data

3
推荐指数
1
解决办法
1617
查看次数

一个没有 $ 符号的 Unix AIX 变量?

我正在尝试调试现有程序并找到一个没有 $ 符号前缀的 if 条件。

值是:

dt_val=1234
prev_dt_val=1234
Run Code Online (Sandbox Code Playgroud)

如果条件如下:

if [ dt_val -eq prev_dt_val ]
then
  echo "Equal"
else
  echo "Not equal"
fi

Result:
Equal
Run Code Online (Sandbox Code Playgroud)

有人对没有 $ 符号的情况如何正常工作有所了解吗?
不应该是..吗?

[ $dt_val -eq $prev_dt_val ]
Run Code Online (Sandbox Code Playgroud)

比较字符串值时,相同的条件失败。这是否意味着,此条件不需要数字的 $ 符号?

附加信息:
按照建议将字符串与 == 进行比较:

dt_val="abcd"
prev_dt_val="abcd"

if [ dt_val == prev_dt_val ]
> then
> echo Equal
> else
> echo Not equal
> fi
Not equal
Run Code Online (Sandbox Code Playgroud)

外壳信息:

echo $SHELL
/usr/bin/ksh
Version M-11/16/88f
Run Code Online (Sandbox Code Playgroud)

想知道为什么也没有错误。

ksh aix test numeric-data variable

3
推荐指数
1
解决办法
289
查看次数

向用户输入添加前导零,但正在使用 printf 进行转换

我目前正在寻找以下代码的替代方案,该代码的工作方式不那么“不稳定”。

printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$vTICKET"); printf "$vTICKET\n";
Run Code Online (Sandbox Code Playgroud)

如果我输入072作为输入,这就是我看到的

Please enter the ticket number: 072
0058
Run Code Online (Sandbox Code Playgroud)

我想知道是否有另一种方法可以让我对输入或read命令更加宽容?printf似乎是在不实际测试字符串长度的情况下添加前导零的酷方法。

bash input shell-script numeric-data printf

3
推荐指数
1
解决办法
391
查看次数

如何对 1000 行文件中的每 20 行进行排序,并仅将每个间隔中具有最高值的排序行保存到另一个文件?

我有一个包含 1000 行文本的文件。我想以每 20 行间隔对第四列进行排序,并将输出打印到另一个文件。有人可以帮我用 awk 或 sed 对它们进行排序吗?

这是数据结构输入的示例

   1      1.1350  1092.42    0.0000
   2      1.4645   846.58    0.0008
   3      1.4760   840.01    0.0000
   4      1.6586   747.52    0.0006
   5      1.6651   744.60    0.0000
   6      1.7750   698.51    0.0043
   7      1.9216   645.20    0.0062
   8      2.1708   571.14    0.0000
   9      2.1839   567.71    0.0023
  10      2.2582   549.04    0.0000
  11      2.2878   541.93    1.1090
  12      2.3653   524.17    0.0000
  13      2.3712   522.88    0.0852
  14      2.3928   518.15    0.0442
  15      2.5468   486.82    0.0000
  16      2.6504   467.79    0.0000
  17      2.6909   460.75    0.0001
  18      2.7270 …
Run Code Online (Sandbox Code Playgroud)

awk text-processing sort numeric-data

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

增加文件中的索引

好吧,看来我找不到做我需要的方法。

假设我有一个这样的文本文件 A

(freqBiasL2[27])      
(SatBiasL1[27])       
(defSatBiasL2_L1[27]) 
(defSatBiasSlope[27]) 
(defSatBiasSigma[27]) 

(freqBiasL2[28])      
(SatBiasL1[28])       
(defSatBiasL2_L1[28]) 
(defSatBiasSlope[28]) 
(defSatBiasSigma[28]) 

(freqBiasL2[29])      
(SatBiasL1[29])       
(defSatBiasL2_L1[29]) 
(defSatBiasSlope[29]) 
(defSatBiasSigma[29])
Run Code Online (Sandbox Code Playgroud)

等等。我想更改 [] 括号之间的索引,使每个索引 i = i+3。

我尝试了 for 循环和 sed 的组合,但不起作用

for i in {27..107..1}
do
    i_new=$((i+3))
    sed -e 's/\['$i'\]/\['$i_new'\]/' prova.txt 

done
Run Code Online (Sandbox Code Playgroud)

问题是它会将前 27 个更改为 30,但在接下来的交互中,它将找到 2 个索引为 30 的块(更改后的块和原始块)。

如何在不覆盖已经更改的索引的情况下执行此操作?

好的,谢谢,我编辑了我的问题以进行改进:如果我有 2 个索引,我该如何做类似的事情:

(freqBiasL2[32][100])
(SatBiasL1[32][101])
(defSatBiasL2_L1[32][102])
(defSatBiasSlope[32][103])
(defSatBiasSigma[32][104])
Run Code Online (Sandbox Code Playgroud)

我只想增加第二个索引而忽略第一个?

linux perl text-processing numeric-data

2
推荐指数
1
解决办法
369
查看次数

计算每个数字出现的次数

一个文件包含 5 列数字

例子:

12 34 67 88 10
 4 90 12 10 7
33 12 5  76 34
Run Code Online (Sandbox Code Playgroud)

我想打印相同的数字,看看它消失了多少次。例子:

3 : 12
2 : 34
Run Code Online (Sandbox Code Playgroud)

grep sed awk numeric-data

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

生成 11 位随机数

我需要一个生成 11 位随机数的命令。如何才能做到这一点?

sed awk numeric-data

2
推荐指数
1
解决办法
216
查看次数

如何从第 4 列的值中获取最大值、最小值和平均值

我有这样结构的数据

X   43808504    G   1   ^]. <
X   43808505    C   3   .   4
X   43808506    T   8   .   ?
X   43808507    G   5   .   C
Run Code Online (Sandbox Code Playgroud)

我想从第 4 列中获取最大值 (8)、最小值 (1) 和平均值 (4.25) 并将其写入文件。

我一直在努力排序然后删除数据,但这似乎非常低效。

谢谢你的帮助

text-processing numeric-data

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

“排序-n”和“排序-g”有什么区别?

-n两个排序选项和之间有什么区别-g

细节太多但文档不够充分,这有点令人困惑。

sort numeric-data

2
推荐指数
1
解决办法
1415
查看次数

如何对具有不同数据类型的多列进行排序

这是我的制表符分隔文件 t.tsv:

\n
$ cat t.tsv\n2022/05/05  -258.03\n2022/05/07  -18.10\n2022/05/09  -10.74\n2022/05/09  -132.60\n2022/05/12  -18.56\n2022/05/12  -20.20\n2022/05/17  -11.00\n2022/05/17  -112.91\n2022/05/17  -51.43\n2022/05/17  -64.78\n2022/05/18  -13.96\n2022/05/18  -13.96\n2022/05/18  -7.51\n2022/05/19  -17.08\n2022/05/20  -33.08\n
Run Code Online (Sandbox Code Playgroud)\n

我正在使用 MacOS 12.4 排序(来自手册页:排序实用程序符合 IEEE Std 1003.1-2008 (\xe2\x80\x9cPOSIX.1\xe2\x80\x9d) 规范)首先按 alpha seq 中的第 1 列进行排序升序,然后按数字升序排列 col2。

\n
$ cat t.tsv|sort --field-separator='\\t' --key=1,1 --key=2,2n\n2022/05/05  -258.03\n2022/05/07  -18.10\n2022/05/09  -10.74\n2022/05/09  -132.60\n2022/05/12  -18.56\n2022/05/12  -20.20\n2022/05/17  -11.00\n2022/05/17  -112.91\n2022/05/17  -51.43\n2022/05/17  -64.78\n2022/05/18  -13.96\n2022/05/18  -13.96\n2022/05/18  -7.51\n2022/05/19  -17.08\n2022/05/20  -33.08\n
Run Code Online (Sandbox Code Playgroud)\n

我很困惑为什么当第一列相同时第二列没有按升序排序。许多 SE 对同一问题的回答都说 (a) 您将单个列指定为--key=1,1,并且 (b) 您可以应用诸如-n单个键定义之类的选项--key=2,2n

\n

更新:我应该提到我的外壳是 …

sort numeric-data

2
推荐指数
1
解决办法
291
查看次数

标签 统计

numeric-data ×10

awk ×3

sort ×3

text-processing ×3

sed ×2

aix ×1

bash ×1

diff ×1

file-comparison ×1

grep ×1

input ×1

ksh ×1

linux ×1

perl ×1

printf ×1

shell-script ×1

test ×1

variable ×1