当前位置: 代码迷 >> 综合 >> awk引用外部变量进行匹配操作
  详细解决方案

awk引用外部变量进行匹配操作

热度:86   发布时间:2023-10-09 08:44:57.0

源文件如下:

# cat data.txt

6426  3   4% S    53 701632K  30232K  bg u0_a52   com.XXXX.stb.agent
** MEMINFO in pid 6426 [com.XXXX.stb.agent] **
         4       56             42       86/606/5  /data/data/com.XXXX.stb.agent/databases/preference.db

6426  3   4% S    53 701632K  30232K  bg u0_a52   com.XXXX.stb.agent
** MEMINFO in pid 6426 [com.XXXX.stb.agent] **
         4       56             42       86/606/5  /data/data/com.XXXX.stb.agent/databases/preference.db

6426  3   4% S    53 701632K  30232K  bg u0_a52   com.XXXX.stb.agent
** MEMINFO in pid 6426 [com.XXXX.stb.agent] **
         4       56             42       86/606/5  /data/data/com.XXXX.stb.agent/databases/preference.db

只想匹配com.XXXX.stb.agent结尾的行,并且不使用硬编码的方式匹配出。

脚本如下:

# cat t.sh

#!/bin/sh
name="com.XXXX.stb.agent"
gawk 'BEGIN{FS=" "}'"/$name$/"'{print $4}' $1

然后执行sh t.sh data.txt

输出结果为:

4%

4%

4%

命令解释:

gawk 'BEGIN{FS=" "}'"/$name$/"'{print $4}' $1

BEGIN表示在执行gawk程序前要执行的代码块,代码块内容是指定输入分隔符为空格,

然后使用$name变量的值匹配,并且注意是以$name结尾,第二个$符表示前面的字符是最后一个字符。

$4表示打印第4个字段,$1为命令行的第一个参数。

  相关解决方案