一、文本处理工具
1.文本查看命令
cat [OPTION]… [FILE]…
-n 显示行号
-b 空格行不加行号,有字符的行才加
-s 相邻的空行压缩为一行,长和-n联用
-v 处理windows中的^M
-T 可以看到tab\space
-A 显示所有控制符(包括windows文本中的^M,^T)
-E 显示行结束符$ (回车)
tac[OPTION]… [FILE]…将每个指定文件按行倒置并写到标准输出。
效果与cat 相反
效果比较:
PHP/upload/image/20160805/1470407076660904.png">
more [OPTIONS…] FILE…
常用快捷操作:
Enter向下n行,需要定义。默认为1行
Ctrl+F向下滚动一屏
空格键向下滚动一屏
Ctrl+B返回上一屏
=输出当前行的行号
V 调用vi编辑器
!cmd调用Shell,并执行命令
q 退出more
less 一页一页地查看文件或STDIN输出(与more类似,但是支持上下翻)
常用快捷操做:
n:重复前一个搜索(与/或?有关)
N:反向重复前一个搜索(与/或?有关)
b向后翻一页
d向后翻半页
h显示帮助界面
Q退出less命令
u向前滚动半页
y向前滚动一行
空格键滚动一行
回车键滚动一页
[pagedown]:向下翻动一页
[pageup]:向上翻动一页
head [OPTION]… [FILE]…
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#: 指定行数
tail [OPTION]… [FILE]…
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#: 指定从结尾开始的#行内容
+#: 指定从开头开始的#行内容
常用方法: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 : 所有行合成一行显示
使用示例
1 a
2 b
3 c
4 d
PHP/upload/image/20160805/1470407219209338.png">
5.文本数据统计
wc 统计指定文件中的字节数、单词数、行数,并将统计结果显示输出
直接使用 wc file ―>
行数 字数 字符数(= 字节数)
常用选项:
-c,�bytes统计字节数
-m,�chars 统计字符数
-l,�lines 统计行数
-L,�max-line-length 统计最长行的长度
-w,�words 统计单词数
6.文本排序
$ sort [options] file(s)
常用选项
-r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-f 选项忽略( fold)字符串中的字符大小写
-t c 选项使用c做为字段分隔符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq命令:从输入中删除重复的前后相接的行
uniq [OPTION]… [FILE]…
-d: 仅显示重复过的行;
-u: 仅显示不曾重复的行;
连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
7.文件比较
比较两个文件之间的区别
$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no
―
> use_widgets = yes
注明第5行有区别(改变)
使用 -u 选项来输出“统一的( unified)” diff格式文件,最适用于补丁文件。
patch 命令复制在其它文件中进行的改变(要谨慎使用!)
$ 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:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字
分类:
基本正则表达式: BRE
扩展正则表达式: ERE
grep -E,egrep
正则表达式引擎:
采用不同算法,检查处理正则表达式的软件模块PCRE( Perl Compatible Regular
Expressions)
帮组信息: man 7 regex
字符匹配:
. : 匹配任意单个字符;
[ ] : 匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]、 [:lower:]、 [:upper:]、 [:alpha:]、 [:alnum:]、 [:punct:]、 [:space:]
PHP/upload/image/20160805/1470407442800921.png">
PHP/upload/image/20160805/1470407442228787.png">
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*:匹配前面的字符任意次,包括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,…
或者:
a|b
C|cat: C或cat
(C|c)at:Cat或cat
原文链接:https://www.f2er.com/regex/358922.html