文件查看和正则表达式

文件查看工具

        cat,tac,rev,more,less,head,tail

cat:查看文本

         cat [OPTION]… [FILE]…

         -E:显示行结束符$

         -n:对显示出的每一行进行编号

tac:查看文件

         功能同cat命令,但是cat正序显示文件,tac反序显示文件

         tac [OPTION]… [FILE]…

         -E:显示行结束符$

         -n:对显示出的每一行进行编号

rev:查看文件

         按正序的行显示文件,但行中内容按反序显示

[root@CentOS6 ~]# cat acl3

g:g2:wx

d:g:g2:wx

[root@CentOS6 ~]# tac acl3

d:g:g2:wx

g:g2:wx

[root@CentOS6 ~]# rev acl3

xw:2g:g

xw:2g:g:d

more:分页查看文件,到末尾自动退出

        more [OPTIONS…] FILE…

less:一页一页地查看文件,到末尾时不退出

         查找字符串的命令:

         /PATTERN   搜索文本

         ?PATTERN  搜索文本

                 n:下一个匹配的字符串

                 N:上一个匹配的字符串

         less命令是man命令使用的分页器(同man的翻页手法)

head:查看文件的前面几行,默认查看前10行

         head [OPTION]… [FILE]…

                 -n #:指定获取前#行

                 -#:指定前#行

[root@CentOS6 ~]# head -3 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail:查看文件的后面几行,默认查看后10行

         tail [OPTION]… [FILE]…

                 -n #:指定获取后#行

                 -#:指定获取后#行

                 -f:跟踪显示文件新追加的内容

         eg:tail -n0 -f file  只查看file文本的新加的行

tail-f.png

[root@CentOS6 ~]# tail -3 /etc/passwd

tom4:x:509:509::/home/tom4:/bin/bash

tom5:x:510:510::/home/tom5:/bin/bash

hadoop:x:511:511::/home/hadoop:/bin/bash

文件查看及处理工具

        cut,paste,wc,sort,diff

cut:查看文件并切割文件

         cut [OPTION]… [FILE]…

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

                 -f FILEDS:

                         #:第#个字段

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

                                  如果是3,1其排序结果也是1,3

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

                 -c:按字符切割

                 -dB:等同于 -d "  "

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

[root@CentOS6 ~]# tail -3 /etc/passwd | cut -d: -f3,7,1

tom4:509:/bin/bash

tom5:510:/bin/bash

hadoop:511:/bin/bash

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

         paste [OPTION]… [FILE]…

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

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

         paste -d: f1 f2

[root@CentOS6 ~]# cat acl1 acl2

g:g2:rw

d:g:g2:rw

g:g3:r

d:g:g3:r

g:g2:rx

d:g:g2:rx

g:g3:r

d:g:g3:r

[root@CentOS6 ~]# paste -d: acl1 acl2

g:g2:rw:g:g2:rx

d:g:g2:rw:d:g:g2:rx

g:g3:r:g:g3:r

d:g:g3:r:d:g:g3:r

wc:文本数据统计

         # wc acl1

                  4  4  34  acl1

                  行数 字数 字符数 文件名

         -l 只计数行数

         -w 只计数单词总数

         -c 只计数字节总数

         -m 只计数字符总数

sort:文本排序

         sort [options] file(s)

                 -n 执行按数字大小整理

                 -t char 使用char做分隔符

                 -k # 指定排序时安#行的数据对file进行排序

                 -r 反向排序

                 -f 忽略字符大小写

                 -u 删除输出中的重复行

[root@CentOS6 ~]# sort -t: -k3 -n /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

uniq:报告或移除重复的行

         uniq [OPTION]… [FILE]…

                 -c: 显示每行重复出现的次数(重复行只显示一次)

                 -d: 仅显示重复过的行

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

                 连续且完全相同的行方为重复

                          常和sort命令一起配合使用,效果更好

                          eg:cut -d: -f7 /etc/passwd | sort | uniq -c

[root@CentOS6 ~]# cut -d: -f7 /etc/passwd |sort |uniq -c

     15 /bin/bash

      1 /bin/sync

      1 /sbin/halt

     29 /sbin/nologin

      1 /sbin/shutdown

练习:1 、找出ifconfig 命令结果中本机的所有IPv4 地址

csu1.png

2 、查出分区空间使用率的最大百分比值

csu2.png

3 、查出用户UID最大值的用户名、UID 及shell 类型

csu3.png

4 、查出/tmp的权限,以数字方式显示

csu4.png

diff:比较文件

         diff命令的输出被保存在一种叫做“补丁”的文件中

         diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE

                -u:使用unified机制,显示要修改的行的上下文,默认显示3行

patch:向文件打补丁

         适用-b选项来自动备份改变了的文件,老文件的新名叫file.orig

         patch /PATH/TO/OLDFILE < /PATH/TO/TATCH_FILE

         -R选项:恢复老文件

[root@CentOS6 testdir]# cp /etc/fstab ./

cp: overwrite `./fstab'? y

[root@CentOS6 testdir]# cp fstab fstab.cg

[root@CentOS6 testdir]# vi fstab.cg

[root@CentOS6 testdir]# diff -u fstab fstab.cg > fstab.patch

[root@CentOS6 testdir]# diff fstab fstab.cg 

5c5

< #

> # hello world

[root@CentOS6 testdir]# patch fstab < fstab.patch 

patching file fstab

[root@CentOS6 testdir]# diff fstab fstab.cg 

Linux上文本处理三剑客

         grep :文本过滤( 模式:pattern) 工具;

                  grep, egrep, fgrep (不支持正则表达式搜索,只支持纯文本搜索)

         sed :stream editor ,流编辑器,文本编辑工具;

         awk :Linux 上的实际为gawk(GNU awk) ,文本报告生成器;

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

         支持正则表达式的程序:grep, vim, less,nginx等

         正则表达式分两类:

                 基本正则表达式:BRE

                          grep ,egrep -G

                 扩展正则表达式:ERE

                          grep -E, egrep

         正则表达式引擎:

                 采用不同算法,检查处理正则表达式的软件模块

                 PCRE(Perl Compatible Regular Expressions)

         元字符分类:字符匹配、匹配次数、位置锚定、分组

grep

         grep: Global search REgular expression and Print out the line.

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

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

         grep [OPTIONS] PATTERN [FILE…]

         grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

                 –color=auto:  对匹配到的文本着色显示;

                 -v: 显示不能够被pattern匹配到的行;

                 -i: 忽略字符大小写

                 -n:显示匹配的行号

                 -c: 统计匹配的行数,而不显示匹配到的内容

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

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

                 -A #:after,显示匹配的行及其后#行

                 -B #: before,显示匹配的行及其前#行

                 -C #:context,显示匹配的行及其前后各#行

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

                          grep –e 'cat' -e 'dog' file

                 -E:使用ERE

                          扩展的正则表达式

         基本正则表达式元字符:

                 字符匹配:

                         . :  匹配任意单个字符;

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

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

                         [:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:punct:] [:space:]

                 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数,默认工作在贪婪模式:尽可能长的匹配

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

                         .* :任意长度的任意字符

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

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

                         \{m\} :匹配前面的字符m次

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

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

                                 <=n次

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

                                 >=m次

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

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

                         $ :行尾锚定,用于模式的最右侧

                         ^PATTERN$:  用于模式匹配整行

                                 ^$:  空行

                                 ^[[:space:]]*$ :空白行或包含tab字符的行

                         \< 或 \b :词首锚定,用于单词模式的左侧

                         \> 或 \b :词尾锚定;用于单词模式的右侧

                                 注意:在grep中,字母和数字的组合也被视为单词

                                 \<PATTERN\>:锚定以PATTERN表达式做为单词的行

                 分组及引用

                         \(\):将1个或多个字符捆绑在一起作为一个整体进行处理

                                 \(xy\)*ab:xy作为一个整体出现0此或多次

                                 注意:分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部变量中,这些变量为:

                                         \1:模式从左侧起,第一个左括号以及与其匹配的右括号之间的内容

                                         \2:模式从左侧起,第二个左括号以及与其匹配的右括号之间的内容

                                         \3:

                                         ……

                         后向引用:引用前面的分组括号中的模式所匹配的字符,且引用中的数据和分组模式匹配到的数据是一样

练习:1、显示/etc/passwd 文件中不以/bin/bash 结尾的行

grep1.png

2 、显示用户rpc 默认的shell 程序

grep2.png

3 、找出/etc/passwd 中的两位或三位数

grep3.png

4 、找出"netstat -tan" 命令的结果中以'LISTEN' 后跟0 、1或多个空白字符结尾的行

grep4.png    

egrep 及扩展的正则表达式

         egrep = grep -E

         egrep [OPTIONS] PATTERN [FILE…]

                  选项:-i,-o,-v,q,-A,-B,-C

                          -G:支持基本的正则表达式

         扩展正则表达式元字符:

                 字符匹配:

                         .:  匹配任意单个字符;

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

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

                                  [:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:punct:] [:space:]

                 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数,默认工作在贪婪模式,尽可能长的匹配

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

                         .* :任意长度的任意字符

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

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

                         {m} :匹配前面的字符m次

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

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

                                 <=n次

                                 {m,} :匹配前面的字符至少m次

                                 >=m次

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

                         ^ :行首锚定

                         $ :行尾锚定

                         ^PATTERN$:  用于模式匹配整行

                                 ^$:  空行

                                 ^[[:space:]]*$ :空白行或包含tab字符的行

                         \< 或 \b :词首锚定

                         \> 或 \b :词尾锚定

                                 注意:在grep中,字母和数字的组合也被视为单词

                                 \<PATTERN\>:锚定以PATTERN表达式做为单词的行

                 分组及引用

                         ():括号内模式会被记录于正则表达式引擎中:

                         后向引用:\1,\2,\3……

                 或者

                         a|b:a或者b

                         eg:C|cat :表示C或者cat

                         (C|c)at :表示Cat或者cat

练习:1 、显示当前系统上,root,gao和user1用户的相关信息

egrep1.png

2 、统计以root 身份登录的每个远程主机IP

egrep2.png

3 、使用egrep 取出/etc/rc.d/init.d/functions

egrep3.png

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/30235

(0)
megedugaomegedugao
上一篇 2016-08-07 22:06
下一篇 2016-08-07 22:06

相关推荐

  • 制作python模块安装包[原创]

     python的第三方模块越来越丰富,涉及的领域也非常广,如科学计算、图片处理、web应用、GUI开发等。当然也可以将自己写的模块进行打包或发布。一简单的方法是将你的类包直接copy到python的lib目录,但此方式不便于管理与维护,存在多个python版本时会非常混乱。现介绍如何编写setup.py来对一个简单的python模块进行打包。 一、…

    Linux干货 2015-03-27
  • 记录Linux入门3天,每天的点点滴滴记录

        Linux 文件系统的特性:      1、文件名严格区分字符大小写      2、文件名可以使用除了 /  意外任意的字符,但不建议使用特殊字符      3、文件名长度不能超过255个字符     &nbsp…

    Linux干货 2017-05-21
  • 用户与用户组相关的配置文件与命令总结

    Linux 中用户与用户组相关的配置文件与命令总结 用户与用户组 UID、GID 名称解析与解析库(passwd、group、shadow、gshadow) 用户信息库/etc/passwd 用户密码信息/etc/shadow 组的信息库/etc/group 组的密码信息/etc/gshadow 用户管理命令 用户组管理命令 用户与用户组 Linux是一种多…

    2016-10-23
  • 用vsftpd来搭建网络yum源

    1、分别在CentOS6和CentOS7分别搭建网络yum源 a、CentOS 7中 首先安装并启用vsftpd服务 [root@node1 ~]# mount /dev/cdrom /mnt/yum/ [root@node1 ~]# vim /etc/yum.repos.d/local.repo [local] name=local baseurl=fil…

    2015-10-03
  • DNS从入门到管理(一)

    DNS从入门到管理(一) DNS概念 DNS三步法 反向解析 主从DNS服务器的实现 子域授权 智能DNS 压力测试与DNS排错 DNS概述 DNS(Domain NameSystem,域名系统),域名和IP地址相互映射的一个分布式数据库,通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。而DNS的主要作用,就是域名解析,将主机名解析成IP地址。…

    Linux干货 2016-10-06
  • LVS负载均衡初接触

    Linux Cluster : Cluster : 计算机集合, 为解决某个特定问题组合起来形成的单个系统; Linux Cluster 类型 : LB : Load Balancing, 负载均衡;()HA : High Avaiibality, 高可用;( 通过冗余的方式让活动主机出现问题时取而代之, 并具有原主机一致的功能)HP : High Perf…

    Linux干货 2016-10-28