在学习使用python处理日志开始阶段,对我阻力最大的莫过于对linux的不熟悉了,有种寸步难行的感觉。

在之后乱学一通之后,发现有点对我颇有益处:

  1. 学《鸟哥linux私房菜基础学习篇》,内容不多,但是对linux文件系统和基本组成有个基本的认识很有必要;
  2. 熟悉使用vim。开始的时候每次都下载到windowns再编辑实在太傻 了~;
  3. 使用ls -l + 通配符查找文件,复杂的查找使用find;
  4. 按自己需要学习linux文本领域的三大利器:grep(查找)、sed(编辑)、awk(分析)

大概整理下之前常用的命令:

一、find命令

1、查找当前目录下非空且满足命名要求的文件

find ./ ! -empty -name "*20160228*"

(注意空格)

2、在一堆文件中查询关键字所在的行

find ./-name "*20160228*" | xargs cat | grep ""

也可以直接使用

cat "*20160228*" | grep ""

cat一堆文件首先会把一堆文件合并为一个大文件。

3、查找并复制

find ./ -name "*201504101446*" | xargs  -i cp {}  ./yourDir

4、查找并删除

$find ./ -name "*201502*.log" -exec rm {} \;

【注】exec与xargs差异

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。
但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。
错误信息通常是“参数列太长”或“参数列溢出”。
5、查询当前目录下每个文件的行数
find . -type f | xargs wc -l

仅获取当个文件行数

cat tcpSocketSer.py | wc -l

仅获取所有文件的总行数

find . -type f -exec wc -l {} \; | awk '{sum+=$1}END{print sum}'

二、awk命令

6、将某一列的值累加

cat flowgw_billing.log. | awk '{sum +=$5} END {print sum}'

7、更改文件列顺序

cat daily_partner_bill.log. | awk '{print $4"\t"$1"\t"$2"\t"$3}' > test2;mv test2 daily_partner_bill.log.

比较笨拙的做法,暂时想不到其他的了。

8、指定列条件并累加

cat .log | awk '$2=="hengDa" {sum +=$4} END {print sum}'

指定条件分开累计

cat .log |  awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}'

9、分运营商初步统计

cat ??.log |  \
awk '$3=="selectName" {a[$2]+=$5;} END {for(i in a) print i,a[i]}' | \
awk --re-interval '{if($1 ~/(133|153|180|181|189|177)[0-9]{8}/) print "CTCC",$1,$2;\
else if($ ~/(||||||||||||||||||)[-]{}/) print "CMCC",$,$;\
else if($ ~/(|||||||||)[-]{}/) print "CUCC",$,$;\
else print "None",$,$}END{}'

三、压缩文件

10、不解压查询压缩文件列表

gzip -dc fff.tar.gz | tar tvf -

如果压缩文件内带有文件夹则不行

11、不解压查看文件内容

zcat fff.tar.gz | cut -f -

输入内容会附带文件属性信息,可以用cut -f 按字段截取部分想要的

12、查询已打包文件内容

zcat *201504_30*.log | grep --binary-files=text  | cut -f -

若需要匹配文件复杂,可以使用find命令衔接

find . -type f -name  "201504_30" | xargs  zcat {} \; | grep --binary-files=text  ""

13、将当前文件夹所有压缩文件解压,并删除原文件

for tar in *.tar.gz;  do tar xvf $tar; done
find ./ -name "*.gz" | xargs rm -rf

四、排序去重

由于uniq只是针对相邻行去重,所以通常和sort配合使用。

sort参数简要说明

-n     按数值
-k 按第二列
-r 反序
-t: 以冒号分隔

uniq参数简要说明

-i  忽略大小写字符的不同
-c  进行计数
-u  只显示唯一的行
-d  仅显示存在重复的行

14、查询累计用户数(每条记录包含一个电话号码)

cat ?????.log | cut -f  | sort | uniq | wc -l

15、查询非电信累计用户数(添加正则匹配条件)

cat ?????.log | cut -f  | sort | uniq | egrep -v '^1(33|53|77|8[019]|700).{7,8}$' | wc -l

五、文件合并

  • 行合并
  • cat file1 file2
  • 列合并
  • paste file1 file2
  • 取文件交集
  • cat file1 file2 | sort | uniq -d
  • 取文件并集
  • cat file1 file2 | sort | uniq

六、其他

16、查询进程是否存在

ps -ef | grep test.py | grep -v grep

grep本身存在一进程,容易误导

查询并杀死进程

ps -ef | grep test.py| grep -v grep | awk '{print $2}' | xargs kill -

17、查询端口占用情况

lsof -i:

18、查找文件并打包,以当前时间命名

find ./ -name "*log"| xargs tar -zvcf logs.`date +%Y-%m-%d`

其中,`date +%Y-%m-%d-%H%M%S`为可嵌入命令时间格式

19、在后台运行程序

nohup python test.py &

这种方式运行不稳定,可以使用Linux下的脚本管理工具supervior来统一管理。

20、标准输出和标准错误输出

find ./ -name *.log >& all_result

21、启动简易http服务器,实现简单的文件访问

$ python -m SimpleHTTPServer  

在你想要启用访问的目录下执行

22、格式化json

我们经常需要用curl访问一个已存在的接口,但是返回结果不易查看,可以简单格式化

cat  jsonString | python -mjson.tool

LINUX学习参考:

http://linuxtools-rst.readthedocs.org/zh_CN/latest/base/index.html

日志处理--高效Linux命令整理的更多相关文章

  1. carson常用linux命令整理

    注:通过日常所用到的一些命令进行整理添加!! 完整的命令可参考:Linux命令大全 1.cp命令 cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录. 2.mount(挂载)命令 在li ...

  2. Linux 命令整理-tailf

    1.tailf 跟踪日志文件 常用参数格式: tailf -n logfile 动态跟踪日志文件logfile,最初的时候打印文件的最后10行内容. 实例 查看从倒数多少行的日志信息 2.tail 跟 ...

  3. day02.2-常用Linux命令整理

    Linux命令语法格式:   命令    [选项]    [参数] 1). 命令:告诉Linux操作系统执行什么: 2). 选项:说明命令的运行方式.选项部分是以字符‘-’开始的: 3). 参数:说明 ...

  4. 常用快捷键以及linux命令整理

    关于快捷键的使用,网上有很多.自己在使用过程中不断整理用到的知识点.一个项目完成了就把涉及用到的快捷键和命令介绍给大家,都是一些比较基础的,常用的命令.希望大家有好的知识点,命令可以及时交流整理. 一 ...

  5. 操作系统 - Linux命令整理 - Ubuntu

    镜像 http://mirrors.163.com/ubuntu-releases/ 系统相关 Ubuntu14.04相关 安装 - VMware Install Ubuntu Continue In ...

  6. 50条LINUX命令整理

    1. find 基本语法参数如下: find [PATH] [option] [action] # 与时间有关的参数: -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件: - ...

  7. Linux命令整理(2018/9/9-2018/9/15)

    根据本周的Linux学习进度,整理了部分Linux知识及常用命令,待完善…… 1.显示默认启动方式(默认启动目标): systemctl get-default 2.设置默认启动方式(默认启动目标): ...

  8. linux命令整理版(拷贝)

    一.文件和目录操作命令 1.pwd 显示当前所在位置 -L 显示逻辑路径,忽略软链接文件 -P 显示物理路径时如果当前目录路径时软链接文件,则会显示软链接对应的源文件 2.cd 切换目录 cd - 回 ...

  9. Linux命令整理,用户管理,用户组管理,系统管理,目录管理常用命令

    知识点梳理 Linux课堂笔记 学习目标 能够知道什么是Linux系统以及它的应用场景 能够独立完成安装VMware虚拟机和网络配置 能够独立完成安装CentOS以及远程终端SecureCRT 能够熟 ...

随机推荐

  1. 解决Acunetix 12中文汉化的方法

    最近下载一款测试软件acunetix,苦于满屏英文的苦恼,看不懂,于是乎就问度娘,结果度娘就是给中文破解包: 我是12版的,网上提供的都是11版的,没法用.怎么办呢?还好我是做测试的,平时做兼容性测试 ...

  2. Python 学习笔记(基础语法 restful 、 Flask 和 Requests)

    input 函数 #!/usr/bin/env python3 name = input("\n\n按下 enter 键后退出.") print(name) print() 在 p ...

  3. npm install 成功安装依赖后,运行跑不起来怎么办?

    最近接手公司的项目,由于代码历史悠久,据说已经最少经历过了6个人的手,查看gitee提交的年限,竟然是1-2年前的代码,好吧.这个锅总得有人接,既然是架构师,就要勇于面对挑战,今天把我解决的方法记录起 ...

  4. spring-boot-devtools热加载不起作用

    在开发过程中,希望修改时能够及时更新修改,即热加载,但是spring-boot-devtools不起作用.这主要是两个原因导致. 一.spring-boot-maven-plugin插件没有配置,如下 ...

  5. 开源认证组件汇总 Kerberos和CAS

    一.Kerberos 1.Kerberos原理和工作机制 概述:Kerberos的工作围绕着票据展开,票据类似于人的驾驶证,驾驶证标识了人的信息,以及其可以驾驶的车辆等级. 1.1 客户机初始验证   ...

  6. docker-dnsmasq使用

    docker-dnsmasq支持通过web页面配置域名映射,镜像地址:https://hub.docker.com/r/jpillora/dnsmasq 使用步骤如下: 1.在Docker宿主上创建 ...

  7. leetcode 258. 各位相加 (python)

    给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所以 ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第2节 Date类_5_练习_计算出一个人已经出生了多少天

    Alt+回车

  9. Numpy和Pandas

    NumPy是高性能科学计算和数据分析的基础包.数据结构为ndarray,一般有三种方式来创建.ndarray是N-Dimensions-Array(N维数组)的简称,ndarray要求元素数据类型一致 ...

  10. [转载]OpenSSL中文手册之命令行详解(未完待续)

     声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...