Input.txt
として名前を付けたファイルには、名前、クラス、schoolName、marks1、marks2として#
区切り文字付きの次のデータがあります。
Deepu#First#Meridian#95#90
Neethu#Second#Meridian#80#75
Sethu#First#DAV#75#70
Theekshana#Second#DAV#80#79
Teju#First#Sangamithra#88#63
Theekshita#Second#Sangamithra#91#90
上記のファイルを使用して|
、出力としてセパレーターを使用して平均とともにすべての詳細を印刷します。
私の答え:
awk 'OFS="|" { avg=0; for(i=4;i<=NF;i++){avg=($4+$5)/2;} print $1,$2,$3,$4,$5,avg}' Input.txt
私は次のようにもう1つのコマンドを試しました:
awk 'OFS="|" {sum=0; for(i=4;i<=NF;i++) sum+=$i; print $1,$2,$3,$4,$5,sum/(NF-2)}' Input.txt
出力は次のようになります。
希望の出力を得るために私を助けてください。
BEGINでFSを設定する必要があります。以下は私のために機能します
awk 'BEGIN {FS="#"} {avg=0; for(i=0;i<NR;i++) avg=($4 + $5)/2.0;}{OFS="|"}{print $1,$2,$3,$4,$5,avg}'
$ awk 'BEGIN {FS="#"} {avg=0; for(i=0;i<NR;i++) avg=($4 + $5)/2.0;}{OFS="|"}{print $1,$2,$3,$4,$5,avg}' mehdi.txt
Deepu|First|Meridian|95|90|92.5
Neethu|Second|Meridian|80|75|77.5
Sethu|First|DAV|75|70|72.5
Theekshana|Second|DAV|80|79|79.5
Teju|First|Sangamithra|88|63|75.5
Theekshita|Second|Sangamithra|91|90|90.5
$
@EdMortonに感謝します。これは、次のようにさらに短縮できます。
$ awk ' BEGIN { FS="#";OFS="|"} {$6=($4 + $5)/2.0;$0=$0;print $0 }' mehdi.txt
Deepu|First|Meridian|95|90|92.5
Neethu|Second|Meridian|80|75|77.5
Sethu|First|DAV|75|70|72.5
Theekshana|Second|DAV|80|79|79.5
Teju|First|Sangamithra|88|63|75.5
Theekshita|Second|Sangamithra|91|90|90.5
$
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加