windows - linux中多个文件或每三行的平均广告标准偏差
问题描述
我的操作系统是 windows 10,我在 windows 上使用 bash 来执行 linux 命令。我有一个包含 96 行的文件,我有多个文件覆盖了该文件的每三行,我想将它们的均值和标准差逐行添加到单个文件中。
单个文件
1 31.31
2 32.24
3 32.11
4 20.97
5 20.93
6 20.91
7 22.58
8 22.46
9 22.52
10 20.71
11 20.25
12 20.51
文件 1
1 31.31
2 32.24
3 32.11
文件 2
4 20.97
5 20.93
6 20.91
文件 3
7 22.58
8 22.46
9 22.52
首先,我尝试将具有详细模式的文件拆分为多个文件
grep -i 'Sample' Sample3.txt | awk '{print $5, $6}' | sed 's/\,/\./g' >> Sample4.txt | split -l3 Sample4.txt --verbose
像 foreach 和 awk 这样的 tcsh 命令可以用于 bash 脚本吗?我们可以在单个文本文件中执行此操作,还是必须将该单个文件拆分为文件?
例如输出可以是:
输出.txt
mean stand.D.
31.88667 0.50362 ----- first three rows mean and sd
20.93667 0.030 ----- second three rows mean and sd
22.52 0.06 ----- third three rows mean and sd
etc etc etc
解决方案
使用这个 awk 脚本怎么样?
BEGIN {
avg=0; j=0
fname = "file_output.txt"
printf "mean\t stand.D\n" > fname
}
{
avg = avg + $2
values[j] = $2
j = j + 1
if (NR % 3 == 0) {
printf "%f\t", avg/3 > fname
sd = 0
for (k = 0; k < 3; k++) {
sd = sd + (values[k]-avg/3)*(values[k]-avg/3)
}
printf "%f\n", sqrt(sd/3) > fname
avg = 0; j = 0
}
}
输出:
mean stand.D
31.8867 0.411204
20.9367 0.0249444
22.52 0.0489898
20.49 0.188326
“Bash 脚本”(foo.sh):
#!/bin/bash
# data.txt is Single File
awk -F " " -f script.awk data.txt
推荐阅读
- reactjs - 设置 PORT 仍然首先尝试在 3000 React App 上运行
- javascript - 有没有办法更改 VTKJS 中的默认光标样式?
- laravel - Laravel 在我的路由中添加了一个额外的 can:isSuperAdmin 中间件
- r - ggplot 缺少所有轴标签
- angular - 如何为嵌套的动态组件实现 Angular Reactive Forms
- ios - 多个部署目标 Pod install
- asp.net-core - NReco - wkhtmltopdf - 如何实现自定义字体?
- javascript - 如何重新创建以下链接的推荐部分的滑块?
- git - 即使我已正确配置,.gitconfig 也无法正常工作
- java - Collections 类中的 Max 方法