文本处理工具

1、cat命令

功能:

显示文本内容,连接合并文本内容并在标准设备上输出

语法:

cat [OPTION]... [FILE]...

选项:

-E:显示行结束符(回车)$
-A:显示所有控制符,相当于-vET
-n:对显示出的每一行进行编号
-b:对非空白行编号
-s:将连续的空行压缩成一行
-T:把TAB字符显示为^I
-v:除了 LFD 和 TAB 之外所有控制符用 ^ 和 M- 记方式显示

示例:

查看/etc/issue文件内容
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
将/etc/issue文件和/etc/hostname文件合并为issname
[root@localhost ~]# cat /etc/hostname /etc/issue > issname
[root@localhost ~]# cat issname
localhost.localdomain
\S
Kernel \r on an \m

2、tac命令

功能:

逆向连接或打印文本内容到标准输出设备上

语法:

tac [OPTION]... [FILE]...

选项:

-a:将内容追加到文件的末尾
-i:忽略中断信号

示例:

用tac命令显示/etc/issue文件内容
[root@localhost ~]# tac /etc/issue

Kernel \r on an \m
\S

3、rev命令

功能:

将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出

语法:

rev [options] [file ...]

示例:

用rev命令显示/etc/issue文件内容
[root@localhost ~]# rev issname 
niamodlacol.tsohlacol
S\
m\ na no r\ lenreK

4、more命令

功能:

用于分页显示 (一次一屏) 文本(无法往首部翻屏)

语法:

more [options] file [...]

选项:

-m:指定每屏显示的行数(整数)
-d:显示翻页和退出提示
-s:多个空行压缩成一行显示
-u:禁止下划线
+num:指定每屏显示的行数

说明:

space键:显示文本的下一屏
回车键:显示文本的下一行
/ :输入一个模式,可以在文本中找下一个相匹配的模式(正则表达式)
H键:显示帮助
B键:显示上一屏
Q键:退出

示例:

使用more命令显示/etc/passwd文件内容
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

5、less命令

功能:

显示文档内容,可以上下翻页(用PageUp键向上翻页,用PageDown键向下翻页)

语法:

more [options] file

选项:

-N:显示行号
-l:搜索时忽略大小写
-s:将连续的空行压缩成一行显示

说明:

/字符串:向下搜索“字符串”
?字符串:向上所属“字符串”
n:向下搜索(重复前一个搜索)
N:向上搜索(逆向重复前一个搜索)
b键:向后翻一页
d键:向后翻半页
h键:显示帮助
q键:退出
u键:向前滚动半页
回车键:向下滚动一行
空格键:向下滚动一页

示例:

[root@localhost ~]# less -N /etc/passwd
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin

6、head命令

功能:

显示文件的开头部分(默认显示10行)

语法:

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

选项:

-c #:指定显示头部内容的#个字符
-n #:指定显示头部内容的#行

示例:

显示/etc/passwd文件的前5行
[root@localhost ~]# head -n 5 /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

7、tail命令

功能:

显示文件尾部部分(默认显示后10行)

语法:

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

选项:

-c #:指定显示尾部内容的#个字符
-n #:指定显示尾部内容的#行

示例:

显示/etc/passwd文件的最后5个字符
[root@localhost ~]# tail -c 5 /etc/passwd
bash (看到的只有4个字符,其实最后面还隐藏了一个结束符$,用cat -A查看)

8、cut命令

功能:

显示文件的指定部分,按列抽取

语法:

cut OPTION... [FILE]...

选项;

-b:仅显示行中指定直接范围的内容
-c:仅显示行中指定范围的字符
-d:指定字段的分隔符,默认tab
-f:指定字段并显示内容(#、#,#、#-#)
-n:与“-b”选项连用,不分割多个字节字符
--out-delimiter=string:指定string为字段分隔符

示例:

[root@localhost ~]# cut -d : -f 4 /etc/passwd

9、paste命令

功能:

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

语法: paste [OPTION]… [FILE]…

选项:

-d:指定分隔符,默认tab
-s:将一个文件的所有行合成一行显示

示例:

[root@localhost ~]# paste -s /etc/issue
\S  Kernel \r on an \m

10、wc命令

功能:

统计打印文件的行数、单词数、字符数

语法:

wc [OPTION]... [FILE]...

选项:

-l:统计行数
-w:统计单词数(连续不断的字符组合)
-c:统计字节数
-m:统计字符数

示例:

[root@localhost ~]# wc /etc/hostname 
 1           1           22     /etc/hostname
(行数) (单词数)    (字符数)

11、sort命令

功能:

文本排序

语法:

sort [OPTION]... [FILE]...

选项:

-r:逆向排序
-n:由大到小排序
-f:忽略字符大小写
-u:删除输出中的重复行
-b:忽略行首的空格字符
-t:指定字段分隔符
-k #:按照指定的分隔符来指定#列的内容来整理

示例:

[root@localhost ~]# sort num
1
2
2
3
[root@localhost ~]# sort -r num
3
2
2
1

12、uniq命令

功能:

忽略重复的行,常与sort命令连用

语法:

uniq [OPTION]... [INPUT [OUTPUT]]

选项:

-c:显示每行重复出现的次数(连续且完全相同方为重复)
-d:仅显示重复的行
-u:仅显示不重复的行

示例:

[root@localhost ~]# sort num | uniq -c
1
2
3

13、diff命令

功能:

比较文件间的区别

语法:

diff [OPTION]... FILES

选项:

-b:忽略一行当中多个空白的区别(about me与about    me 视为相同)
-B:忽略空白行
-i:忽略大小写
-u:以统一的格式输出,适用于补丁文件

示例:

[root@localhost ~]# cat num
1
2
3
[root@localhost ~]# cat num1
1
2
2
3
[root@localhost ~]# diff num num1
2a3
> 2

14、patch命令

功能:

apply changes to files,打补丁

选项:

-b :自动备份改变了的文件
-p #:后面的#表示取消几层目录
-E:将新的文件还原成原来旧的版本

15、grep命令

功能:

文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。(模式:由正则表达式字符及文本字符所编写的过滤条件)

语法:

grep [OPTIONS] PATTERN [FILE...]

选项:

--color=atuo:对匹配到的文本着色显示
-v:显示不能够被模式匹配的行
-i:忽略字符的大小写
-n:显示匹配到的内容的行号
-c:统计匹配到的行数
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-e:实现多个选项键的逻辑or关系(grep -e hi -e hello file)
-w:单词(字符组合)匹配
-A #:显示匹配到的模式的后#行
-B #:显示匹配到的模式的前#行
-C #:显示匹配到的模式的前后各#行
-E:使用扩展正则表达式

示例:

[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

16、正则表达式

(1)正则表达式是一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。分为基本正则表示式和扩展正则表达式。元字符分类:字符匹配、次数匹配、位置锚定、分组。

(2)基本真正表达式元字符

1)字符匹配
.:表示匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:alpha:]:所有大小写字母
[:alnum:]:所有字母和数字
[:upper:]:所有大写字母
[:lower:]:所有小写字母
[:digit:]:所有数字
[:punct:]:所有表达符号
[:space:]:所有空白字符(包括空格和tab键)

2)次数匹配
*:匹配前面的字符任意次,包括0次,(贪婪模式)
.*:任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{n\}:匹配其前面字符n次
\{m,n\}:匹配其前面字符最少m次,最多n次
\{,n\}:匹配其前面字符最少0次,最多n次
\{m,\}:匹配其前面字符最少m次

3)位置锚定
^:行首锚定,用于模式的最左侧
$:行位锚定,用于模式的最右侧
^PATTERN$:用于模式匹配整行
^$:空行
^[[:space:]]*$:空白行(包括空行和tab)
\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用于单词模式的右侧
\<WORD\>:匹配整个单词

4)分组
\(\):将一个或多字符捆绑在一起,当作一个整体进行处理。
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命令方式为:\1、\2 ... 
\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

    实例: \(string1\+\(string2\)*\)
    \1: string1\+\(string2\)*
    \2: string2
后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

(3)egrep及扩展的正则表达式元字符(与基本正则表达式基本相同)

1)字符匹配
.:表示匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:alpha:]:所有大小写字母
[:alnum:]:所有字母和数字
[:upper:]:所有大写字母
[:lower:]:所有小写字母
[:digit:]:所有数字
[:punct:]:所有表达符号
[:space:]:所有空白字符(包括空格和tab键)

2)次数匹配
*:匹配前面的字符任意次,包括0次,(贪婪模式)
.*:任意长度的任意字符
?:匹配其前面的字符0或1次
+:匹配其前面的字符至少1次
{n}:匹配其前面字符n次
{m,n}:匹配其前面字符最少m次,最多n次
{,n}:匹配其前面字符最少0次,最多n次
{m,}:匹配其前面字符最少m次

3)位置锚定
^:行首锚定,用于模式的最左侧
$:行位锚定,用于模式的最右侧
^PATTERN$:用于模式匹配整行
^$:空行
^[[:space:]]*$:空白行(包括空行和tab)
\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用于单词模式的右侧
\<WORD\>:匹配整个单词

4)分组
():将一个或多字符捆绑在一起,当作一个整体进行处理。分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命令方式为:\1、\2 ... 
\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

5)或者
a | b:表示a或b(整个左侧或右侧)
C|cat:表示C或cat
(C|c)at:表示Cat或cat

(4)fgrep不支持正则表达式元字符,当无需用到元字符去编写模式时,使用fgrep性能更好

(5)示例

1 、显示/etc/passwd 文件中不以/bin/bash 结尾的行
    [root@localhost ~]# grep -v /bin/bash$ /etc/passwd
    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

2 、找出/etc/passwd 中的两位或三位数
    [root@localhost ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin

3使用egrep 取出/etc/rc.d/init.d/functions 中其基名
[root@localhost ~]# echo /etc/rc.d/init.d/functions | grep -E "[^/]+/?$"

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

(0)
上一篇 2016-08-07 14:17
下一篇 2016-08-07 22:05

相关推荐

  • RAID简介

    RAID是什么? RAID英文名字叫Redundant Arrays of Independent Disks,也叫磁盘阵列?阵列有是什么意思?通俗的理解就是把很多的硬盘组织在一起来使用。       RAID可以根据性能来划分为两种:有无冗余(容错)能力     &n…

    Linux干货 2016-02-14
  • N26-第一周作业

    1、描述计算机的组成及其功能。 运算器(对数据进行各种算术运算和逻辑运算,即对数据进行加工处理)、控制器(对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问)、存储器(存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息)、I/O      …

    Linux干货 2017-01-13
  • lvs的基本概念及基础配置

    一、知识整理 1、Session:在计算机中,尤其是在网络应用中,称为“会话控制、时域”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将…

    Linux干货 2016-11-11
  • Linux权限基本介绍,管理

     Linux权限机制采用UGO模式。其中 u(user)表示所属用户、g(group)表示所属组、o(other)表示除了所属用户、所属组之外的情况。 u、g、o 都有读(read)、写(write)、执行(excute) 三个权限,所以UGO模式是三类九种基本权限。         用命令 ls …

    Linux干货 2017-07-22
  • Linux系统网络属性管理之bond

    Bonding 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式 •Mode 0 (balance-rr) 轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口…

    Linux干货 2016-09-18
  • N25-第12周博客作业

    1、请描述一次完整的http请求处理过程;   1)客户端和服务器端建立连接。服务器接收或者拒绝请求。   2)服务器端接收客户端请求。接收来自于网络的请求报文中对某资源的一次请求。对请求的处理响应,可分为单进程(启动一个进程处理请求,一次只处理一个)和多进程(并行启动多个进程,每个进程处理一个请求)。  &…

    Linux干货 2017-05-21