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之间需要加',',不然输出的结果没有空格隔开