-N 显示行号
查看时使用的命令
/ OR ? 搜索的内容 搜索关键字
n下一个匹配到的内容
N上一个匹配到的内容
space 向下翻一页
enter 向下翻一行
u 向上翻半页
y 向上翻一行
cat 查看文件 内容会直接全部输出在屏幕上
-n 给每行前面加上行号
-b 给非空行前面加上行号
-s 把空行合并成一行
-E 显示行结束符$
-T 显示制表符
-v 显示隐藏字符
-A -vTE的组合,显示所有隐藏字符
tac 倒着查看文件
enter 查看下一行
space 查看下一页
Ctrl+B 查看上一页
b 回到最上面
q 退出
-n number OR -number 查看文件前面指定数量的行数
-c 总共获取的字符数
-n number OR -number 查看文件后面指定数量的行数
-f /[file] 跟踪指定文件的新追加的内容
例子:tail -f /var/log/httpd/access_log | grep “172.16.1.10”
-c 总共获取的字符数
文本编辑工具
-d “:” 文本分隔符,默认是tab
-f # 以分隔符划分的第几个字段
# 第几个字段
#,#[#,#] 不相连的多字段
#-# 连续的字段
#-#,# 混合字段
-c # 以每行第#字符截取
例子:cut -d “/” -f 1-2,4 /etc/fstab
-d 分隔符:指定行划分的界限
-s 所有行显示在一行显示
例子:paste -d”:” -s file1 file2
文本数据收集与整理
例子: $wc /etc/fstab
17 90 993 /etc/fstab
17是行数 -l 只看行数
90是单词数 -w 只看单词数
993是字符数 -c OR -m 只看字数
-r 反响整理文件 (上大下小)
-n 按数学大小排序
-f 忽略大小写
-u 删除重复的行
-t # 使用#作为字段分界符
-k # 使用#以分界符为段数来排序
例子:sort -t “:” -k 3 -n /etc/passwd
-c 显示每行出现重复次数
-d 之显示重复过的行
-u 之显示不重复过的行(完全相同的行为重复)
例子:cat /etc/passwd | sort -n -d “:” -k 3 | sort -c
例子:diff file1 file2
6c6 第六行第六个字符不一样
< kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
—
> kkkkk7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
linux文本处理三剑客
grep文本搜索工具
egrep 扩展正则表达式
fgrep 不支持正则表达式
sed 行编辑器
awk 文本处理工具
# #搜索的文本,可以调用变量“$USER” ‘$USER’,也可以用命令`whoami`
–color=auto 对匹配到的文本作色显示(7上支持)
-v 不显示匹配到的内容
-i 忽略大小写
-n 显示匹配的行号,在前面显示匹配到的字段在文件里原有的行数位置
-c 统计匹配的行数,之显示匹配到多少数量。
-o 只显示匹配到的字符段。
-q 静默模式,不输出任何信息。
-w 匹配整个单词
-e 指定多个条件,条件是或的关系
例子:grep -e “root” -e “ftpd” /etc/passwd
-A # 匹配到的字段所在行的后#行 (其他参数最好在前面)
-B # 匹配到的字段所在行的前#行 (其他参数最好在前面)
-C # 匹配到的字段所在行的前后#行(其他参数最好在前面)
-E 相当于egrep,使用新的正则。(ERE)
-F 相当于fgrep,不使用正则表达式。
由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义。
正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
程序支持:grep,sed,awk,wim,less,nginx,,varnish等
分类:
BRE 基本正则表达式:grep
ERE 扩展正则表达式:egrep grep -E
PCRE 正则表达式引擎
PCRE是一个perl库,采用不同算法,检查处理正则表达式的软件模块.
元字符 正则表达式中具有特殊意义的专用字符
元字符分类 字符匹配、匹配次数、位置锚定、分组
字符匹配 (要用[]再把特殊元字符扩上,不然系统会认定是普通括号)
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
例子:grep -E [123] /etc/passwd
[^] 匹配指定范围外的任意单个字符
例子:grep -E [^123] /etc/passwd
[:alnum:] 匹配字母和数字
例子:grep -vE [[:almun:]] /etc/passwd
[:alpha:] 匹配大小写字母
[:lower:] 匹配小写字母
[:upper:] 匹配大写字母
[:blank:] 匹配空白区和制表符。等效于 [ \t]。
[:space:] 匹配空格,制表符。
[:cntrl:] 匹配不可打印的控制字符。(括换行符、换页符、退格、空格、空、制表符、空白等)
[:digit:] 匹配十进制数字(0-9)
[:xdigit:]匹配十六进制数字(0-f)
[:graph:] 匹配打印字符。等效于 [[:alnum:][:punct:]]。 (换行可以匹配到)
[:print:] 匹配打印字符和空格。(不包扩制表位)
[:punct:] 匹配标点符号
匹配次数 用在指定次数的字符后面,指定字符出现的次数。
* 匹配前面字符出现最少0次,最多无限次。(贪婪模式)
例子:.* 匹配任意长度的字符
\? 匹配前面的字符0至1次。
\+ 匹配前面的字符至少1次。
\{n\} 匹配前面的字符N次。
\{m,n\} 匹配前面字符至少出现M次,最多出现N次。
\{,n\} 匹配前面的字符最多出现N次。
\{n,\} 匹配前面的字符最少出现N次。
位置锚定 定位出现的位置
^ 行首锚定 用于模式的最左侧
例子:egrep ^[[:almun:]]* /etc/passwd
$ 行尾锚定 用于模式的最右侧
例子:grep -E [1-7]/{3,10/}$ /etc/passwd
^root$ 整行匹配
^$ 空行
^[[:space:]]$ 匹配空行
\< or \b 词首锚定:用于单词的左侧
\> or \b 词尾锚定:用于单词的右侧
\b#\b or \<#\> 匹配整个单词
分组 \(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理。
分组括号里匹配到的内容,会存入变量1中。左往右,从1开始往下数。
\1 表示左边第一个分组括号的匹配到的内容变量。
\(string1\+\(string2\)*\)
\1 string1\+\(string2\)*
\2 string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非 模式本身
\| 或 a\|b a or b。
原创文章,作者:sheep,如若转载,请注明出处:http://www.178linux.com/73255