![Android는 더 이상 awk를 지원하지 않으며 교체해야 합니다. [닫기]](https://linux55.com/image/131213/Android%EB%8A%94%20%EB%8D%94%20%EC%9D%B4%EC%83%81%20awk%EB%A5%BC%20%EC%A7%80%EC%9B%90%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B0%20%EA%B5%90%EC%B2%B4%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
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