linux awk

ps -ef|grep php-fpm|awk '{print " -p " $2" -s 10000 -o /tmp/strace_"$2".log"}'|xargs strace

抽取匹配关键字附近的字串

比如匹配下面log中的took以及其后的字符串

awk '{match($0,/.+(took.+)/,a);print a[1]}' took.txt    #$0表示全行,a这里表示数组

	Line 589: 03-21 19:11:13.981 <12>[    1.777781][    T1] init 4: (Loading properties from /system_ext/etc/build.prop took 0ms.)
	Line 591: 03-21 19:11:13.981 <12>[    1.778807][    T1] init 4: (Loading properties from /vendor/default.prop took 0ms.)
	Line 603: 03-21 19:11:13.981 <12>[    1.782036][    T1] init 4: (Loading properties from /vendor/build.prop took 3ms.)
	Line 611: 03-21 19:11:13.981 <12>[    1.782925][    T1] init 6: (Loading properties from /odm/etc/build.prop took 0ms.)

执行结果:

took 0ms.)
took 0ms.)
took 3ms.)
took 0ms.)

awk print

awk -F " " '{ print $1, $2, $3 }' took.txt.1 >took.txt.2  # $1 $2 $3之间需要加',',不然输出的结果没有空格隔开

 

posted @ 2020-03-22 18:09  aspirs  阅读(91)  评论(0编辑  收藏  举报