스크립트에 의해 생성된 출력 값을 사용하여 파일에 값을 추가합니다.

스크립트에 의해 생성된 출력 값을 사용하여 파일에 값을 추가합니다.

데이터가 포함된 txt/log 파일이 있습니다. cat sample.log/(.txt)

500,3,2   

실행 중인 스크립트는 Sample.log의 값을 덮어씁니다. 새 행을 덮어쓰거나 생성하는 대신 해당 행에 데이터를 추가하고 싶습니다.

예:

Sample.log -500,3,1  
Script out- 600,4,3

최종 출력은 다음 위치에 저장되어야 합니다.sample.log

1100,7,4

스크립트가 실행될 때마다 해당 값이 계속 추가됩니다.

이 결과를 얻을 수 있도록 도와주세요.

답변1

다음은 스크립트를 호출 script.sh하고 기존 전체 파일을 호출하는 GNU awk를 사용하여 이를 수행하는 한 가지 방법입니다 /tmp/sample.log.

script.sh|\
cat /tmp/sample.log -|\
awk -F, '{for (f=1;f<=NF;f++) TOT[f]+=$f} END {for (f=1;f<length(TOT);f++) printf TOT[f]","; print TOT[length(TOT)]}' >/tmp/sample1.log
mv -f /tmp/sample1.log /tmp/sample.log

의 출력을 script.sh기존 출력과 결합(1행으로 배치) sample.log한 다음 두 행을 추가 awk하고 그 결과를 교체에 사용합니다.sample.log

이는 필드 수에 관계없이 작동합니다(일관적일 필요는 없음). 구분 기호는 쉼표로 설정되어 있지만 쉽게 변경할 수 있습니다.

답변2

다음 단계를 시도했습니다.

sh script >scriptout
cat sample.log scriptout|awk -F ","  'BEGIN{sum=0;kum=0;jum=0} OFS =","{sum=sum+$1}{kum=kum+$2}{jum=jum+$3}END{print sum,kum,jum}' > final_out
mv final_out sample.log

관련 정보