Android 不再支持 awk,需要更换

Android 不再支持 awk,需要更换

我有一些旧的 shell 脚本,它们使用 awk 替换名为 awkLog 的文件中的一些标签,以使其更具可读性。当前命令看起来像这样:

awk log.txt -f awkLog > output.txt

目的是该脚本将在 log.txt 中写入数据,例如 cpu 使用情况等,然后它将“解析”数据并按照 awkLog 中指定的顺序将其写入 output.txt。

我寻找了一些替代品,但不幸的是我没有 shell 脚本编写经验...我发现有些替代品正在使用命令 cut。但我不知道如何在 shell 脚本中实现这一点。

awkLog的代码:

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

相关内容