awk를 사용하여 awkLog라는 파일의 일부 태그를 대체하여 더 읽기 쉽게 만드는 오래된 쉘 스크립트가 있습니다. 현재 명령은 다음과 같습니다.
awk log.txt -f awkLog > output.txt
의도는 스크립트가 CPU 사용량 등과 같은 데이터를 log.txt에 기록한 다음 데이터를 "파싱"하여 awkLog에 지정된 순서대로 output.txt에 쓰는 것입니다.
몇 가지 대안을 찾았지만 불행히도 쉘 스크립팅 경험이 없습니다. 제가 찾은 몇 가지 대안은 cut 명령을 사용하는 것이었습니다. 하지만 쉘 스크립트에서 이것을 달성하는 방법을 모르겠습니다.
awk로그 코드:
BEGIN { maxfree = 0
minfree = 10000000000 }
{ savailable += $1
sused += $2
sfree += $3
sshared += $4
sbuff += $5
if ( $3 > maxfree ) maxfree = $3
if ( $3 < minfree ) minfree = $3 }
END { print "MEMORY"
mavailable = savailable/NR
print "(average) available : ", mavailable
print "average used : ", sused/NR
print "average free : ", sfree/NR
print "average shared : ", sshared/NR
print "average buff : ", sbuff/NR
print "free max : ", maxfree
print "free min : ", minfree
print "Minimum MEMORY usage : ", mavailable-maxfree, "K"
print "Maximum MEMORY usage : ", mavailable-minfree, "K"
print "Average MEMORY usage : ", mavailable-sfree/NR, "K" }
log.txt에서는 다음과 같습니다.
User 1%, System 3%, IOW 0%, IRQ 0%
User 6 + Nice 0 + Sys 14 + Idle 420 + IOW 0 + IRQ 0 + SIRQ 0 = 440
PID PR CPU% S #THR VSS RSS PCY UID Name
10488 3 2% R 1 3704K 1248K fg shell top
답변1
귀하의 질문에서 내가 이해한 것은 파일의 문자열을 바꾸고 싶다는 것입니다. 그렇다면 sed
이것이 더 나은 명령입니다.
sed -i 's/oldString/newString/g' log.txt