zoukankan      html  css  js  c++  java
  • Linux中grep、sed、awk使用介绍

    linux文件操作命令介绍
    1)grep
    grep 用于在文件中查找符合条件的记录
    grep 参数 过滤条件 文件
    过滤的条件中可使用正则表达式
    -c 显示符合的行数
    -i 忽略大小写
    -n 显示符合要求的记录,包含行号
    -v 显示不符合要求的记录
    -A n 显示符合要求的记录,及下面的n行
    -B n 显示符合要求的记录,及上面的n行
    -C n 显示符合要求的记录,及上面和下面各n行
    -E 显示符合多个条件的记录
    --color 高亮显示关键字

    多个条件选择过滤,使用 -E参数
    多个并且条件过滤,使用多个grep 、管道符|

    例如:grep -n 'perl' yum.log-20160823
    grep -E 'perl|sql' yum.log-20160823

    2)sed
    sed 用于查询符合条件的文件并输出到屏幕或将查询结果写到文件
    sed 选项 命令 文件

    选项:
    -n 对经过处理的行才会显示在屏幕上
    -i 直接修改原文件中的数据

    命令:
    新增 a a后面可接受的字符,新字符插入到目前行的下一行 i i后面可接受的字符,新字符插入到目前行的上一行
    替换 c c后面的字符,替换n1,n2之间的字符,s 替换
    删除 d 删除指定行的字符
    显示 p 显示指定行的字符


    a)显示第几行记录,用字母p
    单引号中的n表示第几行
    显示第n行记录 sed -n 'n'p 文件名

    显示第m,n行记录 sed -n 'm,n'p 文件名

    显示最后一行记录 sed -n '$'p 文件名

    b)显示包含条件的记录
    sed -n '/tomcat/'p /var/log/tomcat.log

    c)显示包含多个条件的记录
    sed -e '/tomcat/'p -e '/2017-03-08/'p -n /var/log/tomcat.log

    d)删除第几行记录,用字母d
    单引号中的n表示第几行
    删除第n行记录 sed -n 'n'd 文件名

    删除第m,n行记录 sed -n 'm,n'd 文件名

    删除最后一行记录 sed -n '$'d 文件名

    e)替换字符,字符s表示替换,g表示在文件中所有出现的地方进行替换
    sed '1,9s/09/nine/g' /var/log/tomcat.log

    f)将匹配到字符进行位置替换,替换的字符用()包裹起来,括号前需加,屏蔽特殊字符
    sed 's/(test)(log)/21/g' /var/log/tomcat.log

    g)修改文件,字符s表示替换,g表示在文件中所有出现的地方进行替换
    sed -i '1,9s/09/nine/g' /var/log/tomcat.log

    3)awk
    awk 用于从文件中截取符合条件的记录
    awk 参数 过滤条件 文件

    a)显示获取到的符合条件的记录,文件中的列以:分割,显示第3列记录
    head -n10 /var/log/tomcat.log| awk -F':' '{print $3}'

    b)显示符合条件记录
    awk '/log/' /var/log/tomcat.log

    c)显示符合多个条件记录

    awk -F':' '/log/ {print $1,$4} /2017/ {print $2,$7}' /var/log/tomcat.log

    d)可以进行逻辑条件的判断,> >= < <= !=等,条件中加""表示字符,否则表示为数字
    awk -F':' '$2>100' /var/log/tomcat.log

    内置函数
    gsub(r,s):在$0中用s代替r
    index(s,t):返回s中t的第一个位置
    length(s):s的长度
    match(s,r):s是否匹配r
    split(s,a,fs):在fs上将s分成序列a
    substr(s,p):返回s从p开始的子串

    BEGIN和END本质是一个pattern。
    BEGIN用于awk程序开始开始前,做一些初始化的工作;
    END用于awk程序结束前,做一些收尾的工作。

    awk中使用shell中定义的变量:使用单引号即可
    awk中使用shell命令:使用双引号,或者system命令
    getline:awk里,从文件中读取变量到awk中

    FILENAME
    FS 分隔符,默认是空格
    NR 当前行数,从1开始
    NF 当前记录字段个数
    $0 当前记录
    $1~$n 当前记录第n个字段
    NF:用分割符分割后,产生的列数
    $NF:最后1列的值

  • 相关阅读:
    Linux服务器安全审计工具与流程完全指南
    谈谈站桩
    Django Push 的一些资料
    Angularjs $http服务的两个request安全问题
    Ubuntu本地uwsgi配Django问题的解决
    Angularjs Post传值后台收不到的原因
    Flex实现双轴条状图
    时间序列学习笔记
    Nuget公布Dll
    【小游戏】有意思的小游戏集合
  • 原文地址:https://www.cnblogs.com/NiceTime/p/6684229.html
Copyright © 2011-2022 走看看