您的位置 首页 > 体育运动

【wc赛季指定球员0强】知识分享:经典的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'

cat |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 //人数相同的按照员工平均工资升序排序

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

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

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

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

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

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

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

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

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

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

编程学习书籍:

编程学习视频:

关于作者: luda

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐