本节主要了解文本处理工具
文件查看命令:cat tac rev
cat [OPTION]… [FILE]…
-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
tac:倒着显示内容
rev:倒着显示内容,同一行内也倒着
分页查看文件:more
more [OPTIONS…] FILE…
-d:显示翻页及退出提示
less :一页一页地查看文件或STDIN 输出
查看时有用的命令包括:
/文本 搜索 文本
n/N:跳到下一个 or 上一个匹配
less 命令是man命令使用的分页器
显示文本前或后行内容
head [OPTION]… [FILE]…
-c #:指定获取前#字节
-n #:指定获取前#行
-#:指定行数
tail [OPTION]… [FILE]…
-c #:指定获取后#字节
-n #:指定获取后#行
-#:
-f:跟踪显示文件新追加的内容,常用日志监控
文本内容切割:cut
cut [OPTION]… [FILE]…
-d delimiter: 指明分隔符
-f fileds:指明需要取出的字段
#:第#个字段
#,#,# :离散的多个字段,例如1,2,3
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7,9,10-13
-c 按字符切割
–output-delimiter=STRING 指定输出分隔符
合并文件
paste 合并两个文件同行号的列到一行
paste [OPTION]… [FILE]…
-d:分隔符: 指定分隔符,默认用TAB
-s:所有行合成一行显示
字符统计:wc
wc [OPTION]…[FILE]…
-l:统计行数
-w:统计单词个数
-c:统计字符个数
-m:只计字符总数
其中1是行数,2是单词个数,7是字符数
文本排序:sort
把整理过的文本显示在STDOUT ,不改变原始文件
sort [OPTION]… [FILE]…
-r:逆序
-n:以数字大小进行排序
-f:忽略字符串中的字符大小写
-u:删除输出中的重复的行
-t c:使用c 做为字段界定符
-k #:以指定字段为标准排序
取第三列以数字大小排列
从输入中删除重复的前后相接的行:uniq
uniq [OPTION] …[INPUT[OUTPUT]]
-c:显示每行重复的次数
-d:仅显示重复的行
-u:仅显示不重复的行
grep :
文本过滤( 模式:pattern) 工具;grep, egrep, fgrep (不支持正则表达式)
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式字符及文本字符所编写的过滤条件
grep [OPTIONS] PATTERN [FILE…]
–color=auto: 对匹配到的文本着色显示;
-v:显示不能够被pattern 匹配到的行;
-i:忽略字符大小写
-n:显示匹配的行号
-c:统计匹配的行数
-o:仅显示匹配到的字符串;
-q:静默模式,不输出任何信息
-A #:after,匹配到的后#行
-B #: before,匹配到的前#行
-C #:context,匹配到的前后各#行
-e:实现多个选项间的逻辑or 关系
grep -e ‘cat ’ -e ‘dog’ file
-w :整行匹配整个单词
-E :使用ERE,支持使用扩展的正则表达式
元字符:
字符匹配:
. :匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
表达方法:
[:alnum:]:表示所有字母和数字
[:alpha:]:表示所有的字母(不区分大小写)
[:digit:]:表示所有的数字
[:lower:]:表示所有的小写字母
[:upper:]:表示所有的大写字母
[:space:]:表示所有的空白符号
[:punct:]:表示所有的标点符号
次数匹配:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*:匹配前面的字符任意次,包括0次 次
默认正则表达式是工作在贪婪模式下,尽可能长的匹配
.* :任意长度的任意字符
\? :匹配其前面的字符0 或1次,即可有可无
\+ :匹配其前面的字符至少1次
\{m\} :匹配前面的字符m次
\{m,n\} :匹配前面的字符至少m 次,至多n次(小于等于,大于等于)
\{0,n\} :匹配前面的字符至多n次
\{m,\} :匹配前面的字符至少m次
位置锚定:对特定位置进行定位
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^PATTERN$:用于模式匹配整行
^$:空行,不包含有空格的行
^[[:space:]]*$:空白行,包含有空格的行
\< 或 或 \b:词首锚定,用于单词模式的左侧
\> 或 或 \b:词尾锚定;用于单词模式的右侧
\<PATTERN\>:匹配整个单词
分组:是指将一个或多个字符捆绑在一起,当做一个整体进行处理
符号是: \(\):
如:\(xy\)*ab 表示xy这个整体可以出现无数次
查找出passwd文件中,r后跟任意小写字母再跟t的字符
扩展正则表达式元字符:
字符匹配:
.:任意单个字符
[]:指定范围内的单个字符
[^]:不在指定范围内的单个字符
次数匹配:
*:任意次
?:0次或1次
+:至少1次
{m}:精确匹配m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:最多n次
分组:
():用括号括起来表示要引用的内容,不需要转义
或者:
a|b:a或者b
原创文章,作者:Dadi,如若转载,请注明出处:http://www.178linux.com/30763