-
文件查看工具:cat
将[文件]或标准输入组合输出到标准输出。
-A, –show-all 等于-vET
-b, –number-nonblank 对非空输出行编号
-e 等于-vE
-E, –show-ends 在每行结束处显示"$"
-n, –number 对输出的所有行编号
-s, –squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, –show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, –show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
–help 显示此帮助信息并退出
–version 显示版本信息并退出
2.分页查看文件:more
more [OPTIONS…] FILE… -d: 显示翻页及退出提示
3.单页查看文件:less
查看时有用的命令包括: /文本 搜索 文本 n/N 跳到下一个 或 上一个匹配 less 命令是man命令使用的分页器
4.获取文本前几行:head -n:指定获取第几行 -c:指定获取多少字节
5.获取文件后几行:tail -n:指定获取第几行 -c:指定获取多少字节
6.文件分割工具:cut
-d DELIMITER: 指明分隔符,默认tab 例如:-d":"
-f 指定获取字段:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7 -c
按字符切割 –output-delimiter=STRING指定输出分隔符
例如;我们要获取/etc/passwd下面的用户名以及uid和shell类型??
[root@localhost ~]# cat /etc/passwd | cut -d: -f1,3,7
7.合并工具:paste
合并两个文件同行号的列到一行
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
[root@localhost ~]# paste -s luyubo.txt luyubo1.txt
8.文本统计工具:wc
wc可以用来统计单词总数,行总数,以及字节总数,字符总数。
用法:wc [选项]… [文件]…
或:wc [选项]… –files0-from=F
输出每个指定文件的行数、单词计数和字节数,如果指定了多于一个文件,继续给出所有相关数据的总计。如果没有指定文件,或者文件为"-",则从标准输入读取数据。
-c, –bytes输出字节数统计
-m, –chars输出字符数统计
-l, –lines输出行数统计
–files0-from=文件从指定文件读取以NUL 终止的名称,如果该文件被
指定为"-"则从标准输入读文件名
-L, –max-line-length 显示最长行的长度
-w, –words显示单词计数
9.文本排序工具:sort
我们这里列出几个常用的几个选项
-r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次
10.统计重复次数:uniq
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行 连续且完全相同方为重复
#一般配合sort使用。soft luyubo.txt | uniq -c
Linux文本处理三剑客之一——grep
grep就像是一个筛选器一样。功能有多强大,就看我们怎么去灵活的使用,结合正则表达式。
用法: grep [选项]… PATTERN [FILE]…
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c
正则表达式选择与解释:
-E: –extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F: –fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G: –basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
-P: –perl-regexp PATTERN 是一个 Perl 正则表达式
-e: –regexp=PATTERN 用 PATTERN 来进行匹配操作
-f: –file=FILE 从 FILE 中取得 PATTERN
-i: –ignore-case 忽略大小写
-w: –word-regexp 强制 PATTERN 仅完全匹配字词
-x: –line-regexp 强制 PATTERN 仅完全匹配一行
-z: –null-data 一个 0 字节的数据行,但不是空行
-v: –invert-match 显示不能够被pattern匹配到的行;
-q: –quiet 静默模式,不输出任何信息
-o: –only-matching 仅显示匹配到的字符串;
-c: –count 统计匹配的行数
-n: –line-numbe 显示匹配的行号
-A #:–after-context=NUM after, 后#行
-B #:–before-context=NUM before, 前#行
-C #:–context=NUM 前后各#行
输出控制:
-m: –max-count=NUM NUM 次匹配后停止
-b: –byte-offset 输出的同时打印字节偏移
-n: –line-number 输出的同时打印行号
–line-buffered 每行输出清空
-H: –with-filename 为每一匹配项打印文件名
-h: –no-filename 输出时不显示文件名前缀
–label=LABEL 将LABEL 作为标准输入文件名前缀文件控制:
-B: –before-context=NUM 打印以文本起始的NUM 行
-A: –after-context=NUM 打印以文本结尾的NUM 行
-C: –context=NUM 打印输出文本NUM 行
正则表达式(REGEXP):由一类特殊字符及文本字符所编写的模式,其中有 些字符(元字符)不表示字符字面意义,而表示控制或通配 的功能
正则表达式分为两类:
基本正则表达式:BRE
扩展正常表达式:ERE grep -E -egrep
正则表达式引擎:
采用不同算法,检查处理正则表达式的软件模块 PCRE(Perl Compatible Regular Expressions)
元字符分类:字符匹配、匹配次数、位置锚定、分组 这里我理解为正则里面功能分支
基本正则表达式元字符:
. : 匹配任意单个字符;
[] : 匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
^ 行首
$ 行尾
. 任意单一字符
[] []内任意单一字符
[^] 除[]内任意单一字符
* *前面字符重复不确定次数
\+ \+前面字符重复一次以上不确定次数
\? ?前面字符重复0或1次
\ 转义符
.* 任意长度字符
\{n\} 前面字符重复n次
\{n,\} 前面字符重复n次以上
\{m,n\} 前面字符重复m次和n次之间
[:alpha:] 所有字母,包括大、小写
[:alnum:] 所有字母和数字
[:upper:] 所有大写字母
[:lower:] 所有小写字母
[:digit:] 所有数字
[:punct:] 所有标点符号
[:space:] 空格和Tab
正则表达式:
匹配次数:用在要指定次数的字符后面,用于指定前面的字 符要出现的次数
*:匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.*:任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{n\}:匹配前面的字符n次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{n,\}:匹配前面的字符至少n次
位置锚定:定位出现的位置
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定;用于单词模式的右侧
\<PATTERN\>:匹配整个单词
分组表示:
\(\):将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录 于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
\1: 从左侧起,第一个左括号以及与之匹配右括号之间 的模式所匹配到的字符
实例:
\(string1\+\(string2\)*\)
\1: string1\+\(string2\)*
\2: string2
后向引用:引用前面的分组括号中的模式所匹配字符(而 非模式本身)
扩展正则表达式
#扩展表达式支持一些新的语法。
egrep = grep -E
扩展正则表达式的元字符:
字符匹配:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
次数匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置锚定:
^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾
分组:
() 后向引用:\1, \2, …
或者:
a|b
C|cat: C或cat
(C|c)at:Cat或cat
原创文章,作者:闹钟哥,如若转载,请注明出处:http://www.178linux.com/31695