awk处理文件内容格式

荒凉一梦 提交于 2020-03-14 11:34:19
今天运营出了点问题,需要对特定时间段充值数做一个处理,文件格式有特定要求,要符合erlang的格式
{roleID,gold}.
mysql导出所有数据
结果如下【取部分数据看】:
===================================
kuwo    4       50004106230500  100
kuwo    4       50004106230900  10
agent   server  role_id ****
uu178   5       380005100002500 300
agent   server  role_id ****
uu178   6       380006100000600 200
uu178   6       380006100110500 20
agent   server  role_id ****
yy365   1       860001100008000 2000
yy365   1       860001100008100 1900

===================================
首先去掉表头信息:
cat log.txt | grep -v agent
kuwo    4       50004104005100  50
kuwo    4       50004104284100  1000
kuwo    4       50004105824300  1000
kuwo    4       50004106230500  100
kuwo    4       50004106230900  10
uu178   5       380005100002500 300
uu178   6       380006100000600 200
uu178   6       380006100110500 20
yy365   1       860001100008000 2000
yy365   1       860001100008100 1900
==============================
去掉第一列每二列
cat log.txt | grep -v agent | awk '{print $3,$4}'
50004104005100 50
50004104284100 1000
50004105824300 1000
50004106230500 100
50004106230900 10
380005100002500 300
380006100000600 200
380006100110500 20
860001100008000 2000
860001100008100 1900
拼凑格式
cat log.txt | grep -v agent | awk '{print $3,$4}'|  awk '{print "{"$1",",$2"}."}'
{50004104005100, 50}.
{50004104284100, 1000}.
{50004105824300, 1000}.
{50004106230500, 100}.
{50004106230900, 10}.
{380005100002500, 300}.
{380006100000600, 200}.
{380006100110500, 20}.
{860001100008000, 2000}.
{860001100008100, 1900}.
====================================
大功告成,比用脚本去逐行生成文件快多了
最后,整个过程可整理成一条管道命令
cat log.txt | grep -v agent | awk '{print "{"$3",",$4"}."}' > newfile.txt
 




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!