我有一个将数字输出到日志文件的命令,我不喜欢数字更改小数位数时的外观,因为它破坏了对齐方式并使一切看起来很混乱。如何强制输出每次都具有相同的小数位数?
前任:
531.125
531.4561
531.3518
531.2
Run Code Online (Sandbox Code Playgroud)
应该:
531.1250
531.4561
531.3518
531.2000
Run Code Online (Sandbox Code Playgroud)
谢谢!
我发现 mit-scheme 中的浮点乘法不准确,例如,
1 ]=> (* 1991.0 0.1)
Run Code Online (Sandbox Code Playgroud)
会产生
;Value: 199.10000000000002
Run Code Online (Sandbox Code Playgroud)
你能帮忙解释一下奇怪的尾随数字“2”的出现吗?
我需要将文本文件中的十进制值列表转换为十六进制格式,例如 test.txt 可能包含:
131072
196608
262144
327680
393216
...
Run Code Online (Sandbox Code Playgroud)
输出应该是十六进制值列表(十六进制 8 位,带前导零):
00020000
00030000
00040000
...
Run Code Online (Sandbox Code Playgroud)
输出被打印到文本文件中。如何使用 python 或 linux shell 脚本来做这个?
我错过了一个额外的操作:我需要80000000为每个创建的十六进制值添加十六进制。(算术加法,适用于已创建的十六进制值列表)。
我有一个日志文件。对于具有特定数字的每一行,我想对这些行的最后一个数字求和。grep 和 cut 没问题,但我不知道如何对数字求和。我尝试了 StackExchange 的一些解决方案,但没有让它们在我的情况下工作。
这是我到目前为止:
grep "30201" logfile.txt | cut -f6 -d "|"
Run Code Online (Sandbox Code Playgroud)
30201 是我正在寻找的线路。
我想对最后的数字 650、1389 和 945 求和
日志文件.txt
Jan 09 2016|09:15:17|30201|1|SL02|650
Jan 09 2016|09:15:18|43097|1|SL01|945
Jan 09 2016|09:15:19|28774|2|SB03|1389
Jan 09 2016|09:16:21|00788|1|SL02|650
Jan 09 2016|09:17:25|03361|3|SL01|945
Jan 09 2016|09:17:33|08385|1|SL02|650
Jan 09 2016|09:18:43|10234|1|SL01|945
Jan 09 2016|09:21:55|00788|1|SL02|650
Jan 09 2016|09:24:43|03361|3|SB03|1389
Jan 09 2016|09:26:01|30201|1|SB03|1389
Jan 09 2016|09:26:21|28774|2|SL02|650
Jan 09 2016|09:26:25|00788|1|SL02|650
Jan 09 2016|09:27:21|28774|2|SL02|650
Jan 09 2016|09:29:32|30201|1|SL01|945
Jan 09 2016|09:30:12|34032|1|SB03|1389
Jan 09 2016|09:30:15|08767|3|SL02|650
Run Code Online (Sandbox Code Playgroud) 我需要在 sed 中使用正则表达式打印所有包含非数字字符的行。输入是一个 csv,其中一些行包含文本和数字。我只对打印没有数字的那些感兴趣。这是我尝试过的:
sed -E -n '/^\D*$/p' direcciones.csv
Run Code Online (Sandbox Code Playgroud)
为什么它没有找到任何东西?
文件内容:
RANDOM TEXT num1=400 num2=15 RANDOM TEXT
RANDOM TEXT num1=300 num2=10 RANDOM TEXT
RANDOM TEXT num1=200 num2=5 RANDOM TEXT
Run Code Online (Sandbox Code Playgroud)
我想为每行的每个 num2 减去 5,如下所示:
RANDOM TEXT num1=400 num2=10 RANDOM TEXT
RANDOM TEXT num1=300 num2=5 RANDOM TEXT
RANDOM TEXT num1=200 num2=0 RANDOM TEXT
Run Code Online (Sandbox Code Playgroud)
纯 bash 是首选,但如果另一个 GNU 工具做得更好,那也没什么大不了的。
command-line text-processing regular-expression numeric-data
当我试图找到一列值的平均值时,我想得到确切的数字。
例如,这是输入值列:
1426044
1425486
1439480
1423677
1383676
1360088
1390745
1435123
1422970
1394461
1325896
1251248
1206005
1217057
1168298
1153022
1199310
1250162
1247917
1206836
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令时:
... | awk '{ sum+=$1} END { print sum/NR}'
Run Code Online (Sandbox Code Playgroud)
我得到以下的输出:1.31638e+06。但是,我想要1316375.05这种格式的确切数字,甚至更好 1,316,375.05
如何仅使用命令行工具执行此操作?
编辑 1
我发现了以下单行 awk 命令,它将为我提供最大值、最小值和平均值:
awk 'NR == 1 { max=$1; min=$1; sum=0 } { if ($1>max) max=$1; if ($1<min) min=$1; sum+=$1;} END {printf "Min: %d\tMax: %d\tAverage: %.2f\n", min, max, sum/NR}'
Run Code Online (Sandbox Code Playgroud)
为什么NR必须初始化为1?当我删除时NR == 1,我得到了错误的结果。
编辑 2
我正在尝试对一个非常大的文件中的每一列进行数字排序。我需要命令速度很快,所以我尝试在 awk 命令中执行此操作。
示例输入:
1,4,2,7,4
9,2,1,1,1
3,9,9,2,2
5,7,7,8,8
Run Code Online (Sandbox Code Playgroud)
示例输出:
1,2,1,1,1
3,4,2,2,2
5,7,7,7,4
9,9,9,8,8
Run Code Online (Sandbox Code Playgroud)
我做了一些可以完成这项工作的东西(但它不是我需要的强大的 awk 命令):
for i in $(seq $NumberOfColumns); do
SortedMatrix=$(paste <(echo "$SortedMatrix") <(awk -F ',' -v x=$i '{print $x}' File | sort -nr) -d ,)
done
Run Code Online (Sandbox Code Playgroud)
但它很慢!
我试过在 awk 中做到这一点,我想我很接近:
SortedMatrix=$(awk -F ',' 'NR==FNR {for (i=1;i<=NF;i++) print|"sort -nr"}' File)
Run Code Online (Sandbox Code Playgroud)
但它不输出列(只是一个很长的列),我明白为什么这样做但我不知道如何解决它,我想在 awk 中使用 paste 但我不知道如何实现它。
有谁知道如何在 awk 中做到这一点?任何帮助或指导将不胜感激
我试图从一些文本中提取数字。目前我正在使用以下内容:
echo "2.5 test. test -50.8" | tr '\n' ' ' | sed -e 's/[^0-9.]/ /g' -e 's/^ *//g' -e 's/ *$//g' | tr -s ' '
Run Code Online (Sandbox Code Playgroud)
这会给我 2.5,“。” 和 50.8。我应该如何修改第一个sed以便检测浮点数,包括正数和负数?
为什么以下命令打印数值?
$ iostat | sed -n '/[:digit:]/!p'
1.56 1.38 0.31 0.34 0.03 96.38
Run Code Online (Sandbox Code Playgroud) numeric-data ×10
sed ×3
awk ×2
command-line ×2
bash ×1
conversion ×1
cut ×1
grep ×1
linux ×1
lisp ×1
logs ×1
mawk ×1
printf ×1
python ×1
scripting ×1