ファイル名と結果をどのように印刷できますか1/2*(a+b)
?a
2行目の最初のフィールドはどこにあり、b
最後の行の最初のフィールドはどこにありますか?値を変数に定数として保存する方法がわかりません。非常にありがとう
awk -v a=$(NR==2{print $1}) b=$(END(print $1)) '{print FILENAME, 1/2*(a+b)}' rv*.out
ファイル1
4 5 6
14545.5886 2 6
2 3 5
45457.5462 8 6
ファイル2
1 2
34441.4545 8
6 8
8 8
54447.4545 1
出力:
for file in test1.txt test2.txt; do
awk ' (NR==2){a=$1} END{print FILENAME, 1/2*(a+$1)}' "$file" >> stredni.txt;
done
test1.txt 7272.79
test2.txt 17220.7
望ましい結果:
test1 30001.5674
test2 44444.4545
ベストアンサー1
構文var=$(something)
はシェル構文でawk
はなく、「コマンドを実行してsomething
結果をシェル変数に保存する$var
」ことを意味します。 etcはawkステートメントなawk
ので、何らかの方法でスクリプトに接続すると予想しているようです。NR==2
それは動作しません。
このコマンドは、予想される出力を印刷します。
$ for file in file1 file2; do
awk ' (NR==2){a=$1} END{print FILENAME, 1/2*(a+$1)}' "$file";
done
file1 30001.6
file2 44444.5
awk
GNU()を使用してgawk
これを行うこともできます。
$ gawk 'FNR==2{a=$1}ENDFILE{print FILENAME, 1/2*(a+$1)}' file1 file2
file1 30001.6
file2 44444.5