【请教】日志提取指定字段

d4shman 2015-02-13 02:01:26
背景:每天要处理10G的log文件,格式如下:
name=xxx age=yy date=yyyymmdd Pc=xxxx (可能还有其他字段,awk NF会变)
现在要提取age=yy Pc=xxxx这样的内容,我用grep 写了一个脚本,很慢!
#! /bin/bash
#set -x

# the default delimiter
fs=" "
ret=""

# get options
while getopts F:k: opt
do
case "$opt" in
F)
fs=$OPTARG;;
k)
keys=$OPTARG;;
esac
done
# split string into an array
keys=(${keys//,/ })
num=${#keys[@]}
if [ $num -eq 0 ];
then
echo "not enough parameter";
exit;
fi

while read line
do
retstr=""
found=0
for key in ${keys[@]}
do
# \bxxx : word start by xxx
tmpstr=`echo ${line} | grep -oE "\b${key}=[^${fs}]*" `
# do only when string is not empty
[ -n "${tmpstr}" ] && retstr=${retstr}${tmpstr}${fs} && let found+=1
done
# check num
[ -n "${retstr}" -a $found -eq $num ] && echo -e ${retstr}"\n" | sed '/^$/d'
done

该怎样做呢?求大牛们指教!
...全文
316 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
d4shman 2015-02-13
  • 打赏
  • 举报
回复
awk -F " " '{for(i=1;i<=NF;i++)s=($i~/^name=|^Pc=/)?s"\t"$i:s;$0=s;s=""}NF+=0'

18,772

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧