나는 루프를 포함하고있는 셸 스크립트를 가지고있다. 이 루프는 다른 스크립트를 호출합니다. 각 루프 실행의 출력은 파일 (outOfLoop.tr) 안에 추가됩니다. 루프가 끝나면 awk 명령은 특정 열의 평균을 계산하고 그 결과를 다른 파일 (fin.tr)에 추가해야합니다. 마지막에는 (fin.tr)이 인쇄됩니다.평균을 계산하는 셸 스크립트와 awk 추출
루프의 결과를 (outOfLoop.tr) 파일에 추가하는 첫 번째 부분을 얻을 수있었습니다. 또한 내 awk 명령이 작동하는 것처럼 보입니다 ... 그러나 형식면에서 최종 예상 출력을 얻지는 못합니다. 나는 뭔가를 놓친 것 같아.
#!/bin/bash
rm outOfLoop.tr
rm fin.tr
x=1
lmax=4
while [ $x -le $lmax ]
do
calling another script >> outOfLoop.tr
x=$(($x + 1))
done
cat outOfLoop.tr
#/////////////////
#//I'm getting the above part correctly and the output is :
27 194 119 59 178
27 180 100 30 187
27 175 120 59 130
27 189 125 80 145
#////////////////////
#back again to the script
echo "noRun\t A\t B\t C\t D\t E"
echo "----------------------\n"
#// print the total number of runs from the loop
echo "$lmax\t">>fin.tr
#// extract the first column from the output which is 27
awk '{print $1}' outOfLoop.tr >>fin.tr
echo "\t">>fin.tr
#Sum the column---calculate average
awk '{s+=$5;max+=0.5}END{print s/max}' outOfLoop.tr >>fin.tr
echo "\t">>fin.tr
awk '{s+=$4;max+=0.5}END{print s/max}' outOfLoop.tr >>fin.tr
echo "\t">>fin.tr
awk '{s+=$3;max+=0.5}END{print s/max}' outOfLoop.tr >>fin.tr
echo "\t">>fin.tr
awk '{s+=$2;max+=0.5}END{print s/max}' outOfLoop.tr >> fin.tr
echo "-------------------------------------------\n"
cat fin.tr
rm outOfLoop.tr
내가 좋아하는 형식이 원하는 : 나는 결과를 넣어 밖으로 사이에 새로운 라인이 거기로 0.5 awk 명령 내부 max
을 증가했다
noRun A B C D E
----------------------------------------------------------
4 27 average average average average
(여기 내 시도이다 outOfLoop 파일)
가 왜에 훨씬 안하고의 출력 [태그 : AWK]? – Johnsyweb
내 문제는 셸 스크립트에서 아닙니다. 그것은 awk 포맷에서 왔습니다! 내가 awk에서 전체를한다면 ... 문제는 여전히 해결되지 않습니다 !! – SimpleNEasy
awk에서 모든 것을 쓰는 것이 문제를 해결할 수는 없지만 처음에는 문제가 발생할 가능성이 적어지고 그렇게했다면 해결하기가 훨씬 쉽습니다. –