Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在awk中添加循环_Bash_Shell_For Loop_Awk - Fatal编程技术网

Bash 在awk中添加循环

Bash 在awk中添加循环,bash,shell,for-loop,awk,Bash,Shell,For Loop,Awk,我有一个问题在以前的一次会议上得到了解决: 但是因为我有太多的文件,所以对每个文件进行awk,然后使用第二个脚本来获得我想要的输出是不现实的 以下是我的文件的一些示例: 3 10 23 . . . 720 810 980 脚本用于查看第一个文件中的数字在另一个文件中的位置: 2 0.004 4 0.003 6 0.034 . . . 996 0.01 998 0.02 1000 0.23 找到该范围后,估计第二个文件中第二列的平均值 以下是脚本: awk -v start=$(head

我有一个问题在以前的一次会议上得到了解决:

但是因为我有太多的文件,所以对每个文件进行awk,然后使用第二个脚本来获得我想要的输出是不现实的

以下是我的文件的一些示例:

3 
10 
23
.
.
.
720
810
980
脚本用于查看第一个文件中的数字在另一个文件中的位置:

2 0.004
4 0.003
6 0.034
. 
.
.
996 0.01
998 0.02
1000 0.23
找到该范围后,估计第二个文件中第二列的平均值

以下是脚本:

awk -v start=$(head -n 1 file1) -v end=$(tail -n 1 file1) -f script file2

我怎样做一个循环来估计每个文件的平均值呢。我想要的输出是这样的:

Name_of_file
start = number , end = number , mean = number
提前谢谢。

。。把它绕成一个圈

for f in <files>; do 
    echo "$f";
    awk -v start=$(head -n 1 "$f") -v end=$(tail -n 1 "$f") -f script file2;
done
用于f-in;做
回声“$f”;
awk-v start=$(head-n1“$f”)-v end=$(tail-n1“$f”)-f脚本文件2;
完成
就个人而言,我建议将它们组合在一行上(这样您的结果就是块数据,而不是与结果不同行上的文件名——在这种情况下,将
echo“$f”
替换为
echo-n“$f”
(不要添加换行符)


编辑:因为我假设您对语法不熟悉,
可以是文件列表(
file1 file2 file3
),由glob生成的文件列表(
file*
files/data.*.txt
,等等),也可以是由命令生成的文件列表(
$(find files/-name'data'-type f)
,等等).

GNU awk版本4具有
BEGINFILE
ENDFILE
特殊模式,这可能很有用。您应该做的是将问题减少到索引文件和两个其他文件,并显示所需的输出:
for f in <files>; do 
    echo "$f";
    awk -v start=$(head -n 1 "$f") -v end=$(tail -n 1 "$f") -f script file2;
done