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