我的差异显示了两个日志文件之间的一些数字差异。这意味着例如:
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 命令中设置一个阈值,意思是
500。所以9830400-9830500=100。不应显示任何差异。我正在尝试调试现有程序并找到一个没有 $ 符号前缀的 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)
想知道为什么也没有错误。
我目前正在寻找以下代码的替代方案,该代码的工作方式不那么“不稳定”。
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似乎是在不实际测试字符串长度的情况下添加前导零的酷方法。
我有一个包含 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) 好吧,看来我找不到做我需要的方法。
假设我有一个这样的文本文件 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)
我只想增加第二个索引而忽略第一个?
一个文件包含 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) 我有这样结构的数据
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) 并将其写入文件。
我一直在努力排序然后删除数据,但这似乎非常低效。
谢谢你的帮助
这是我的制表符分隔文件 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\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n我很困惑为什么当第一列相同时第二列没有按升序排序。许多 SE 对同一问题的回答都说 (a) 您将单个列指定为--key=1,1,并且 (b) 您可以应用诸如-n单个键定义之类的选项--key=2,2n。
更新:我应该提到我的外壳是 …