【轻知识】过滤日志中你想要的数据:awk、ftp、iterm

关键词脱敏。本文只是提供一个思路。

拿xxxnum。

数据特征如下

{.....","xxxnum":[1801556688484]}}
{.....","xxxnum":["1801556688485","120801556688488"]}}
{.....","xxxnum":["1801556688485","12801556688488"]}}

iterm2 开多个窗口(几台机器就开多个)。

command+shift+i 命令,多个窗口同时输入。

过滤数据

zcat  /xxxx/response_20190918.log.gz  | awk '{gsub( "\"", "");split($0,a,"xxxnum:\\[");split(a[2], b, "]}");gsub(",","\n", b[1]);print b[1];}' |awk '!a[$0]++{print}' >> xxxnum`hostname`.txt # hostname 为后缀,机器名不常变动。

上面何意?

有的有引号有的没有。那么替换引号为空白。然后切割字符串。提取 1801556688484 或 1801556688485,12801556688488(引号被替换空白了)。如何输出到文件中一行一行呢?gsub 把, 替换成换行符('\n')即可。

其实怎么编程就怎么用awk。

集体上传到ftp上

同时输入 ftp 命令。

put 文件 用tab 补齐,然后回车

down到本地

hostarr=('host1' 'host2' 'host3');
for host in $hostarr;
do
    wget ftp://182.171.291.310/xxxnum$host.txt --ftp-user=bieshizhegeip --ftp-password=ipshijiade
done

集体去重

cat quchong_* | awk '!a[$0]++{print}' >> quchong_xxxnum_total.txt 

总结

怎么写程序就怎么用awk。

其实用scp,在本地写个脚本,循环拉日志,然后处理。是比较自动化的一个idea。

建议,在调试你的awk 脚本的时候,建议,自己先建一个小文件,复制几条测试日志。

你可能感兴趣的:(【轻知识】过滤日志中你想要的数据:awk、ftp、iterm)