文本处理工具与正则表达式、grep

一、文本处理工具

1.文本查看命令

cat [OPTION]… [FILE]…

-n 显示行号

-b 空格行不加行号,有字符的行才加

-s  相邻的空行压缩为一行,长和-n联用

-v 处理windows中的^M

-T 可以看到tab\space

-A  显示所有控制符(包括windows文本中的^M,^T)

-E  显示行结束符$ (回车)

tac [OPTION]… [FILE]…  将每个指定文件按行倒置并写到标准输出。

效果与cat 相反

rev  将指定文件从最后一个字符开始显示到第一个字符。

效果比较:

2.分页查看文件内容

more 分页查看文件(无法向前面翻, 只能往后面看)

more [OPTIONS…] FILE…

-d: 显示翻页及退出提示

常用快捷操作:

Enter    向下n行,需要定义。默认为1行

Ctrl+F   向下滚动一屏

空格键  向下滚动一屏

Ctrl+B  返回上一屏

=       输出当前行的行号

:f     输出文件名和当前行的行号

V       调用vi编辑器

!cmd  调用Shell,并执行命令

q        退出more

less 一页一页地查看文件或STDIN输出(与more类似,但是支持上下翻)

常用快捷操做:

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

b  向后翻一页

d  向后翻半页

h  显示帮助界面

Q  退出less 命令

u  向前滚动半页

y  向前滚动一行

空格键 滚动一行

回车键 滚动一页

[pagedown]: 向下翻动一页

[pageup]:   向上翻动一页

3.显示文本前、后行内容

head  显示指定文件的开头至标准输出中

head [OPTION]… [FILE]…

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

-n #: 指定获取前#行

-#: 指定行数

tail  显示指定文件的结尾至标准输出中

tail [OPTION]… [FILE]…

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

-n #: 指定获取后#行

-#:  指定从结尾开始的#行内容

+#: 指定从开头开始的#行内容

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

常用方法:tail -n 0 -f file &  (放入后台跟踪文件新追加的内容,有新加入内

容则弹出)

4.文本抽取、合并

cut [OPTION]… [FILE]…    按列抽取文本指定内容

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

-f FILEDS:

#: 第#个字段

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

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

混合使用: 1-3,7  取1至3,第七字段

-c 按字符切割

-c M-N 取第M-N个字符之间的内容

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

使用示例:

cut -d: -f1 /etc/passwd

cat /etc/passwd | cut -d: -f7

cut -c2-5 /usr/share/dict/words

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

paste [OPTION]… [FILE]…

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

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

使用示例

文件f1:                        文件f2 :

1                                 a

2                                 b

3                                 c

4                                 d

5.文本数据统计

wc     统计指定文件中的字节数、单词数、行数, 并将统计结果显示输出

直接使用 wc file —>

行数      字数      字符数(= 字节数)

常用选项:

-c, –bytes统计字节数

-m, –chars  统计字符数

-l, –lines  统计行数

-L, –max-line-length  统计最长行的长度

-w, –words 统计单词数

6.文本排序

sort 把整理过的文本显示在STDOUT,不改变原始文件

$ sort [options] file(s)

常用选项

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

-n 执行按数字大小整理

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

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

-t c 选项使用c做为字段分隔符

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

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

uniq [OPTION]… [FILE]…

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

-d: 仅显示重复过的行;

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

连续且完全相同方为重复

常和sort 命令一起配合使用:

sort userlist.txt | uniq -c

7.文件比较

比较两个文件之间的区别

$ diff foo.conf-broken foo.conf-works

5c5

< use_widgets = no

> use_widgets = yes

注明第5行有区别(改变)

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

使用 -u 选项来输出“统一的( unified)” diff格式文件,最适用于补丁文件。

patch 命令复制在其它文件中进行的改变(要谨慎使用!)

适用 -b 选项来自动备份改变了的文件

$ diff -u foo.conf-broken foo.conf-works > foo.patch

#将两个文件的不同之处保存至备份文件中

$ patch -b foo.conf-broken foo.patch     #恢复备份信息

二、正则表达式

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

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

打印匹配到的行;

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

grep [OPTIONS] PATTERN [FILE…]

使用示例:

grep root /etc/passwd

grep "$USER" /etc/passwd

grep ‘$USER‘ /etc/passwd

grep `whoami` /etc/passwd

常用选项:

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

(CentOS7中,默认已经使用命令别名

alias grep = grep –clor=auto)

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

-i: 忽略字符大小写

-n: 显示匹配的行号

-c: 统计匹配的行数

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

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

-A #: after, 后#行

-B #: before, 前#行

-C #: context, 前后各#行

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

eg:  grep –e ‘cat ’ -e ‘dog’ file

-w:整行匹配整个单词

-E:使用ERE 拓展表达式

2.正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字

面意义,而表示控制或通配的功能

程序支持: grep, vim, less,nginx等

分类:

基本正则表达式: BRE

扩展正则表达式: ERE

grep -E, egrep

正则表达式引擎:

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

Expressions)

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

帮组信息: man 7 regex

字符匹配:

. : 匹配任意单个字符;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

^$: 空行

^[[:space:]]*$ :空白行

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

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

\<PATTERN\>:匹配整个单词

分组:

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

如: \(root\)\+

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,

这些变量的命名方式为: \1, \2, \3, …\1: 从左侧起,

第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

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

\1: string1\+\(string2\)*

\2: string2

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

3.egrep 拓展正则表达式

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE…]

扩展正则表达式的元字符:

字符匹配:

. 任意单个字符

[] 指定范围的字符

[^] 不在指定范围的字符

次数匹配:

*:匹配前面字符任意次

?: 0或1次

+: 1次或多次

{m}:匹配m次

{m,n}:至少m,至多n次

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

( )

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

或者:

a|b

C|cat: C或cat

(C|c)at:Cat或cat

时间: 2024-11-09 20:19:18

文本处理工具与正则表达式、grep的相关文章

grep文本查看工具及正则表达式

grep文本查看工具及正则表达式 grep:搜索及过滤文本工具: (根据用户所指定的"模式"搜索,过滤条件"对目标文件进行过滤性匹配):grep自带正则表达式引擎工具. 所谓模式:由正则表达式所得元字符及普通文本字符所编写出来的过滤条件"模式" grep:三种支持模式: grep:基本正则表达式 egrep:支持扩展正则表达式 fgrep :不支持正则表达式 三种支持模式因其可以(grep -E:切换扩展,egrep-G:切换基本,分别有以-F切换fgre

文本处理工具之:grep sed awk

正则就是用一些具有特殊含义的符号组合一起来描述字符或字符串的方法.在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正则 一:grep 参数 -n :显示行号 -o :只显示匹配的内容 -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

Linux篇 | 文本处理工具和正则表达式 (一)

文本处理工具和正则表达式 如果用一句话形容Linux系统,我想就是"一切皆文件"在适合不过了.系统的服务.软件.日志.命令的输出结果都是基于文本的,所以我们很有必要知道Linux的常用的文本处理工具有哪些?而且,我们用的这些处理文本工具都离不开一个技术:"正则表达式",它不止适用于Linux,对于一些语言,如Java.Python都能用,甚至Windows系统里也能用正则表达式.那么,如何灵活的运用正则表达式就是这篇博客的意义. 一.文本处理工具 1.抽取文本的工具

Linux篇 | 文本处理工具和正则表达式(二)

文本处理工具和正则表达式 Linux文本处理三剑客 grep:文本过滤(模式:pattern)工具 >grep, egrep, fgrep(不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 本篇主要讲述grep 一.grep 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行.(模式就是"正则表达式") 模式:由正则表达式字符及文本字符所编写的过滤条件

文本处理工具和正则表达式

文本处理工具和正则表达式: 文本查看工具: 1,less,more 查看命令的执行的结果.区别在于less查看命令的执行结果,可以向上和向 下翻页,而more仅可以向下翻页 2,head 从文件的开始查看内容,默认是显示10行 3,tail 从文件尾部查看内容,默认是显示10行 4,cut 截取命令的执行结果,不过cut属于列截取 5,rev 倒置命令的显示结果 6,tac,cat 查看文件内容 分析文本工具: 1,sort sort是对文本中的内容进行排序,它的排序的速度比其他命令的速度要快

文本处理工具和正则表达式、shell脚本编程基础-第四周

第四周-文本处理工具和正则表达式.shell脚本编程基础1. 统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户的个数,并将用户都显示出来grep -v '/sbin/nologin' /etc/passwd|wc -lgrep -v '/sbin/nologin' /etc/passwd|cut -d: -f12. 查出用户UID最大值的用户名,UID及shell类型.cut -d: -f1,3,7 /etc/passwd|sort -t: -k2 -nr

grep文本处理工具、正则表达式

grep是一个文本检索工具,号称linux文本处理三大剑客之一,通常会结合正则表达式使用,支持基本正则表达式和扩展的正则表达式,功能很强大,给我们搜索文本带来了很大的便利,默认情况下,它是贪婪模式,能匹配多长就匹配多长,会将匹配到的整行显示出来.另外两大剑客:sed.awk. grep常用选项: grep -i:忽略大小写 [[email protected] ~]# grep -i tom /etc/passwd tom:x:506:506::/home/tom:/bin/bash Tom:x

关于 文本处理工具、正则表达式、grep 的简单举例

文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat [选项] [file] cat -n     对显示出的每一行进行编号 cat -b     非空行编号 cat -ns    连续压缩空行成一行 cat -v     显示回车符 cat -E     显示行结束符$ cat -A     显示所有控制符 tac file   反向显示内容 rev file   反向显示

grep文本搜索工具与正则表达式

一.文本搜索工具grep (一)grep简介 Linux上常用的三个文本处理工具被人们称为Linux文本处理三剑客,他们分别是: 1.grep(egrep,fgrep):文本搜索工具,基于"pattern"对给定的文本进行搜索操作. 2.sed:stream editor,流编辑器,行编辑工具,文本编辑工具. 3.awk:GNU awk,文本格式化工具,文本报告生成器. 他们都是很优秀的文本处理工具.现在,我就重点介绍下grep. grep:global search regular