源文件如下:
# 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为命令行的第一个参数。