linux查看统计数据命令,查看,统计、正则表达式――Linux基本命令(9)

1.文件查看

(1)正向查看

cat

cat -v显示非打印字符

-E

loading.png

-TTAB

loading.png

-n显示行号(与nl作用类似)

loading.png

loading.png

-s将连续的重复的空行变成一行(与tr -s作用类似,将多个重复的变成一个,如图将多个换行符变成了一个)

loading.png

-A= -vET

(2)整个文件反向查看

tac反向输出 将文件倒过来输出

loading.png

(3)一行反向查看

rev 将每一行反向输出

loading.png

more:

more [OPTIONS...] FILE...

less:一页一页地查看文件或STDIN

查看时有用的命令包括:

/文本 文本

n/N 跳到下一个 或 上一个匹配

less命令是man命令使用的分页器

3.显示文本前或后行的内容

head

head [OPTION]...[FILE]...

-n #: 指定获取前#行

-#: 指定行数

loading.png

-c #: 指定获取前#字节

loading.png

tail

tail [OPTION]...[FILE]...

-c #: 指定获取后#字节

-n #: 指定获取后#行

-#:

-f: 跟踪动态的显示文件新追加的内容,常用日志监控

4. 按列抽取文本cut

cut [OPTION]...[FILE]...

-d DELIMITER: 指明分隔符,默认tab

-f FILEDS:

#: 第#个字段

#,#[,#]:离散的多个字段,例如1,3,6

#-#:连续的多个字段,例如1-6

混合使用:1-3,7

如图,查看/etc/passwd

loading.png

使用cut,以:为分隔符,截取第1个字段(就是用户名那一列)

loading.png

也可以截取第1,3字段(就是用户名和UID)

loading.png

同样的,可以截取前三位

loading.png

-c按字符切割

loading.png

如图,将每行第二个字符切割出来

--output-delimiter=STRING指 定输出分隔符

loading.png

如图,将分隔符改成了“!”

5.paste

paste合并两个文件同行号的列到一行

paste [OPTION]...[FILE]...

loading.png

-d “分隔符”:指定分隔符,默认用TAB

loading.png

-s : 所有行合成一行显示

paste f1 f2 [f3]

paste -s f1 f2

loading.png

6.文本数据统计WC

wc: word count

wc 行数 单词数 字节(换行符也算一个字节)

loading.png

wc -m字符数

-c 字节 (一个字母一个字节,一个汉字三个字节)

loading.png

-l行数

-w 单词数

7.文本排序

sort

loading.png

(正常默认按照第一个数字的大小排序)

-n 执行按数字大小整理

loading.png

-r执行反方向(由上至下)整理

loading.png

-f选项忽略(fold)字符串中的字符大小写

loading.png

-u选项(独特,unique)删除输出中的重复行

loading.png

-t c 选项使用c做为字段界定符

-k X 选项按照使用c字符分隔的X列来整理 能够使用多次

8.uniq

uniq命令:从输入中删除前后相接的连续重复的行

uniq [OPTION]... [FILE]...

-c: 显示每行重复出现的次数

loading.png

-d:仅显示重复过的行

loading.png

-u:仅显示不曾重复的行

loading.png

(uniq命令常与sort命令一起配合使用。要想去除非连续的行,就可以先用sort排序)

loading.png

9.比较文件

比较两个文件之间的区别,可以用diff

loading.png

可以使用diff -u生成补丁(用于软件升级之类的):

diff -u f1 f2 > diff.log生成补丁

mv f2 f2.rm相当于删除了文件

patch -b f1 diff.log 通过补丁还原文件

注:还原之后新生成的文件依然叫f1(其实就是f2),原来的旧的f1会自动命名为f1.orig

mv f1 f2 还原原始的新文件名

mv f1.orig f1 还原原始的旧文件名

diff f2 f2.rm 比较还原回来的新文件与被删除的文件,发现没有区别

10.文本搜索工具

grep: Global search REgulare xpression and Print out the line

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查,打印匹配到的行

模式:由正则表达式字符及文本字符所编写的过滤条件

--color=auto 将匹配的结果着色显示

loading.png

loading.png

在centos6中匹配时是没有颜色的,需要加上--color=auto才能将匹配结果着色,但是在centos7中默认就是着色的,因为alise里已经有设置好了别名。

-v反向匹配 (如grep -v root/etc/passwd将显示所有不带有root的结果)

-i忽略大小写

loading.png

-n显示的结果前增加行号

-c仅显示匹配到结果的行数

-o仅显示匹配到的字符串

loading.png

-q静默模式,不输出任何信息

或者 &>/dev/null

-A#显示关键字行及向后#行

-B#显示关键字行及向前#行

loading.png

-C#显示关键字向前#行,当前行,及向后#行

loading.png

-e实现多个选项间的逻辑or关系

loading.png

-w匹配整个单词

loading.png

-E使用扩展正则表达式 或egrep

-F不使用正则表达式或 fgrep

11.※正则表达式※

(1)REGEXP

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。

程序支持:grep,sed,awk,vim,less,Nginx,varnish等

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

使用方式grep -E或egrep

(2)字符匹配:

.匹配任意单个字符(类似文件名匹配时的问号)

loading.png

[] 匹配指定范围内的任意单个字符

loading.png

[^]匹配指定范围外的任意单个字符

loading.png

[:alnum:] 字母和数字 等于[0-9a-zA-Z]

[:alpha:] 代表任何英文大小写字符 等于[A-Z a-z]

[:digit:] 十进制数字

[:lower:] 小写字母[:upper:] 大写字母

loading.png

[:blank:] 空白字符(空格和制表符)

[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广,一般常用space表示空格)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

[:xdigit:]十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:]

(3)匹配次数

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*匹配前面的字符任意次,包括0次

贪婪模式:尽可能长的匹配

.*任意长度的任意字符

loading.png

\?匹配其前面的字符0或1次

\+匹配其前面的字符至少1次

loading.png

\{n\}匹配前面的字符n次

\{m,n\}匹配前面的字符至少m次,至多n次

\{,n\}匹配前面的字符至多n次

\{n,\}匹配前面的字符至少n次

loading.png

(4)位置锚定

位置锚定:定位出现的位置

^行首锚定,用于模式的最左侧

loading.png

如图,只显示以root开头的行

$行尾锚定,用于模式的最右侧(同理,只显示以指定内容结尾的行)

^PATTERN$ 用于模式匹配整行

^$ 空行 (直接回车)

^[[:space:]]*$ 空白行(包括空格Tab和换行符)

loading.png

如图,其实是显示出来匹配的结果的,只是因为是空白所以不太方便看出来

\

\>或 \b词尾锚定;用于单词模式的右侧(就是单词必须以root结尾)

\匹配整个单词

(因为单词必须以root开头,也要以root结尾,就是匹配整个单词啦)

loading.png

如图,不加锚定时rooter alroot这种带有root的单词也会被匹配出来,如果只想匹配root这个单词就在词首词尾都加上锚定,可只显示root的匹配结果。

(5)其他的表达

分组:

\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+

后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1,\2,\3,...

正则表达式中的小括号"()"。是代表分组的意思。 如果再其后面出现\1则是代表与第一个小括号中要匹配的内容相同。注意:\1必须与小括号配合使用。

\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符。

\2 表示从左侧起第二个左括号以及与之匹配右括号之间的模式所匹配到的字符。以此类推。

示例:\(string1\+\(string2\)*\)

\1 表示string1\+\(string2\)*

\2 表示string2

表示或者:\|

示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat

(6)扩展正则表达式

使用扩展的正则表达式可以使命令更简便一些

egrep=grep -E

egrep [OPTIONS]PATTERN [FILE...]

使用egrep之后,除了词首词尾锚定和后向引用外,其余之前需要带\的都可以去掉\了。

loading.png

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值