• Linux知识分享:经典的Linux文本处理命令,你知道几种吗?


    Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。而在做日志分析时或者配置分析时,通常会遇到查找出符合某一条件的行,并统计,主要应用的就是grep、awk、sort、uniq、wc五个命令 。


     

    1 、awk-对日志内容做统计

    awk 是一种处理文本文件的语言,是一个强大的文本分析工具。awk命令通常是将所列出的行,根据条件打印出某一列或几列。

    常用形式为:awk [options ] 'cmd' file 

    作用:

    一次读取一行文本,按输入分隔符进行切片,切成多个组成部分;

    将每个切片直接保存在内键的变量中,$1$2…($0表示行的全部);

    支持对单个切片的判断,支持循环判断,默认分隔符为空格。

    1)打印特定位置字段

    如:打印每行的第一个和第四个字段(默认按空格和tab 为分隔):

    $ awk '{print $1,$4}' log.txt

    2)指定分隔符:-F

    默认是tab 和空白分隔每行,如果要指定分隔符,带上-F 参数,比如想通过冒号分隔:

    $ awk -F: '{print $1,$4}' log.txt

    3)通过BEGIN和END 设定执行前后语句

    例子:计算文件夹内文件大小:

    $ ls -l *.txt | awk '{sum+=$5} END {print sum}'

     


     

    2 、grep-检索文件内容

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    作用:用户查找文件里符合条件的字符串,可使用正则表达式查找

    语法格式:

    grep [option] pattern file //pattern 通常可以为正则表达式

    grep用法:

    grep一般有两种用法,一种是从文件查找,一种是从管道的输入查找,

    grep 'word' file.txt

    cat file.txt|grep 'word'

    grep的常用参数:


     

    实例

    (1)grep'test'd*#显示所有以d开头的文件中包含 test的行

    (2)grep ‘test’ aa bb cc#显示在aa,bb,cc文件中包含test的行

    (3)grep ‘[a-z]{5}’ aa#显示所有包含每行字符串至少有5个连续小写字符的字符串的行

    (4)grep magic /usr/src#显示/usr/src目录下的文件(不含子目录)包含magic的行

    (5)grep -r magic /usr/src#显示/usr/src目录下的文件(包含子目录)包含magic的行

    (6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

     


     

    3 、sort -排序输出

    sort排序原则:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    语法格式:sort [optional] filename

    常用参数:

    -u:去除重复行

    -r:默认是升序排序,-r是改为降序

    -o:将排序结果写入到源文件

    -n:默认是通过ASCII码值排序,但是这时会出现10比2小的情况,-n就是说要以数值进行排序

    -k和-t:-k是指定以哪一列进行排序,-t是指定分隔符

    举例:

    (1)sort -n -t " " -k 2 -k 3 facebook.txt  //人数相同的按照员工平均工资升序排序

    (2)sort -n -t ' ' -k 3r -k 2 facebook.txt //按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序

    (3)sort -t ‘ ‘ -k 1.2 facebook.txt //从公司英文名称的第二个字母开始进行排序

    (4)sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt //只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序

     


     

    4 、uniq- 消除重复行

    uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。

    常用参数:

    -i  :忽略大小写字符的不同;

    -c  :进行计数,即统计该行的重复次数

    -u  :显示不存在的行

    -d:显示存在重复的行

    uniq 可检查文本文件中重复出现的行列,但其只是去除相邻的重复行,内容的不相邻,并没有合并,所以多与 sort 命令结合使用。

    5 、wc-统计行和字符的工具

    wc统计指定文件中的字节数、字数、行数,并将统计结果显示输出。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。

    作用:用于统计文件内容信息(包含行数、单词数、字节数)

    语法:# wc [参数选项] 文件名

    常用参数:

    -c 统计字节数。

    -l 统计行数。

    -m 统计字符数。这个标志不能与 -c 标志一起使用。

    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

    -L 打印最长行的长度。

    -help 显示帮助信息

    --version 显示版本信息

    -m 和-c 的差别, echo -n “中国” | wc -c 输出为6,echo -n “中国” | wc -m 为2

    实例:

    #wc -lwc /var/log/boot.log

    含义:统计/var/log/boot.log文件的行数,单词数,字节数

    注意:wc命令选项可以混在一起搭配使用,但选项的顺序不影响输出结果,第一个是行数,第二个是单词数,第三个数字节数。


     

     

    好了,今天的分享就到这里了。看到这里,你是不是对“Linux”又有了一点新的认知呢~如果你喜欢这篇文章的话,动动小指,加个关注哦~


     

    最后,如果你也想成为程序员,想要快速掌握编程,这里为你分享一个学习企鹅圈子!

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    资料包含:编程入门、游戏编程、课程设计、黑客等。

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    checkbox的问题整理
    通过阅读ASP.NET MVC5 框架解密 路由的一点心得
    用JS实现避免重复加载相同js文件
    如何给一个网站设置子网站
    Linux环境下Python的安装过程
    linux下更新Python版本并修改默认版本
    【引用】如何读技术类书籍
    专业收藏_资格证书
    ASP.NET单元测试配置文件
    面试收集
  • 原文地址:https://www.cnblogs.com/mu-ge/p/13920571.html
Copyright © 2020-2023  润新知