は、私は2つのデータファイルが'平均' 2つのデータファイルへのawkを使用して
1 1
2 2
そしてdat2.txt
2 2
3 3
どのように私はこれらのファイルは、 "平均的" にawkを使用することができますがdat1.txt持っていると言いますこれを新しいファイルに保存しますか? だからこのケースでは、私は、ファイルdat3.txtの出力たい:
1.5 1.5
2.5 2.5
は、私は2つのデータファイルが'平均' 2つのデータファイルへのawkを使用して
1 1
2 2
そしてdat2.txt
2 2
3 3
どのように私はこれらのファイルは、 "平均的" にawkを使用することができますがdat1.txt持っていると言いますこれを新しいファイルに保存しますか? だからこのケースでは、私は、ファイルdat3.txtの出力たい:
1.5 1.5
2.5 2.5
:
awk '{n=NF/2;for(i=1;i<=n;i++)
printf "%.1f%s",($i+$(n+i))/2,i==n?RS:FS}' <(paste f1 f2)
をこれに試してみて:
awk 'FNR==NR{for(i=1;i<=NF;i++){A[FNR,i]=$i};next} {for(j=1;j<=NF;j++){printf("%.2f ",(A[FNR,j]+$j)/2)};print x}' data1.txt data2.txt
をこのコードは、多くの順列と組み合わせでテストされていません。だからあなたはもっと条件があり、親切に私たちに同じことを教えてください。
てみてください、これは、あまりにつ以上のファイルをサポートすることができますmyfiles*.txt
入力
$ cat f1.txt
1 1
2 2
$ cat f2.txt
2 2
3 3
スクリプト
awk '
FNR==1{
nf++
nc = NF
}
{
for (i=1; i <= NF; i++)
s[FNR,i] += $i;
if (FNR > mnr) mnr = FNR
}
END {
for (i = 1; i <= mnr; i++)
{
for (c=1; c <= nc; c++)
printf("%s%f", (c>1?OFS:""), s[i,c]/nf);
printf "\n"
}
}
' f1.txt f2.txt # you can also input f*.txt
出力
0のように入力ファイル両方のファイルを想定し1.500000 1.500000
2.500000 2.500000
awk '{for(i=1;i<=NF;i++)Sum[FNR"-"i]+=$i}
END {
for(l=1;l<=NR;l++){
for(i=1;i<=NF;i++) printf("%2.1f ", Sum[l"-"i]/NR)
printf("\n")
}
}' dat.1 dat.2
はワンライナーは動作するはずです。このAWKの行数が同じで、引数
$ awk '{a[FNR]+=$1; b[FNR]+=$2}END{for(;++i<=FNR;) print a[i]/(ARGC-1), b[i]/(ARGC-1)}' f1 f2
1.5 1.5
2.5 2.5
を説明:
{
a[FNR]+=$1 # sum col values into arrays
b[FNR]+=$2 # array for each field
}
END {
for(;++i<=FNR;) # iterate arrays in ascending order
print a[i]/(ARGC-1), b[i]/(ARGC-1) # and print array contents divided by filecount
}
を_Iのようなテキストこれが助けてくれることを願っています_そして、もしあなたがこの投稿に役立つものであれば、私に知らせてください。コンテンツ自体に固執し、詳細を説明して投稿をより見栄え良くしてください。 – fedorqui
お詫び@fedorqui、私はコードと説明を与えることを試みる、ありがとう。 – RavinderSingh13