1、文本处理工具
1)cat命令
cat :
1. 作用:将一个或多个文件或标准输入连接,并输出至标准输出,常用来查看文本文件内容
2. 参数:
-E:用$表示行尾
-n : 对所有行加行号
-s : 相邻空行为一行
-T : 显示 ^ I代表TAB键
-e : 等价于-vE
-A : 等价于vET # 用于配置文件或脚本文件的格式的排错
3. window文本文件换行:回车符和换行符
Linux文本:只有换行符
示例:
[ root@szb test]
1 123
2
3
4 ^I
5 234
2)tac命令
tac :
1. 作用:按照行的倒序的方法输出文本信息内容
[ root@szb test]
[ root@szb test]
123
234
345
[ root@szb test]
345
234
123
3)rev命令
rev :
1. 作用:按照同一行内的前后内容也倒序输出
[ root@szb test]
123
234
345
[ root@szb test]
321
432
543
4)more、less命令
more :
1. 作用:文件内容较多时,查看文本文件
2. 注意:
more命令:显示到最后一行后会退出
less命令:默认不会退出
3. less命令查看:
b : 回退到上一屏幕内容
g : 可将光标切换到文件开始
G:切换到文件最后一屏内容
/ string:向下搜索对应字符串,配合n实现同向查找
?string:向上搜索对应字符串,配合N实现逆向查找
5)head、tail命令
head :
1. 作用:查看文本文件前多少行内容 , 默认前 10 行内容
2. 参数:
-n:指定要显示的前多少行;head -n 2 file
-c:以字节为单位
tail
1. 作用:查看文本文件最后多少行内容
2. 参数
-n:指定要显示的结尾多少行
注意:当行数使用 + 号时,表示除了前n- 1 行的内容不输出,后面内容全部输出
eg : seq 6 | tail -n + 3
-c:以字节为单位
-f:跟踪文件是否有追加内容,实时查看新发生的日志文件
注意:tailf命令和tail -f功能类似,但是查看文件不可访问时,会退出
示例:
[ root@szb test]
abcd[ root@szb test]
[ root@szb test]
abc[ root@szb test]
[ root@szb test]
3
4
5
6
6)wc命令
wc :
1. 作用:统计文件和标准输入的文本行数、单词数、字节数和字符数
2. 参数:
-l:只计数行数
-w:只计数单词总数
-c:只计数字节总数
-m:只计数字符总数
-L:显示文件中最长行的长度
[ root@szb test]
6 file
7)cut、paste命令
cut
1. 作用:以指定的分隔符对文件或标准输入的每行内容进行切割
2. 参数:
-b:仅显示指定以字节单位的范围的内容;与-n连用,不分割多字节字符,如汉字
-c:仅显示指定以字符单位的范围的内容
-d:指定字段的分隔符
-f:显示指定字段的内容,某列
--complement:与被选择的字节,字符或字段取反
--out-delimiter = < 字段分割符 > :指定输出内容的字段分隔符
3. 注意:默认分隔符TAB
[ root@szb test]
2
5
8
paste
1. 作用:将两个文件合并为一个文件,默认以行为单位
注意:相同的行合为一行,默认TAB分隔符
2. 参数:
-d:指定分隔符
-s:先将一个文件的所有内容合成一行
[ root@szb test]
123 abc
456 def
789 ghi
[ root@szb test]
123 456 789
abc def ghi
[ root@szb test]
123 :abc
456 :def
789 :ghi
8)sort、uniq命令
sort
1. 作用:按照一定的要求对文件的所有行进行排序,
2. 注意:默认按照字母顺序进行排序。数字排序在字母前
3. 参数:
-t:指定每行字段的切割符号
-k:指定排序字段的编号
-n:指定以数值为排序依据
-r:倒序排序
-R:随机排序
-u:将排序结果中相同的行,进行去重
[ root@szb test]
root:x:0:0:root:/root:/bin/bash
lighthouse:x:1000:1000::/home/lighthouse:/bin/bash
szb:x:1001:1001::/home/szb:/bin/bash
[ root@szb test]
2
1
4
3
uniq
1. 作用:对指定文件生成报告信息和去重邻行重复行的内容
2. 参数:
-c:显示连续重复行的重复次数
-d:只显示连续出现的重复行
-u:显示未曾连续出现的重复行
[ root@szb test]
3 123
2 456
1 67
1 87
9)diff、patch命令
diff
1. 作用:对比分析两个文件的不同之处
2. 用法:diff file1 file2
3. 参数:
-y : 并排对比
-W:指定宽度
-u:使用unified格式(-第一个文件, + 第二个文件)
4. 符号解析
< :后面文件比前面文件少了一行内容
> :后面文件比前面文件多了一行内容
| :前后两个文件内容的有不同
[ root@szb test]
123 123
123 123
123 <
456 <
456 456
67 67
87 87
patch
1. 作用:结合diff输出的unified格式信息和两个文件的任一一个,就可以生成另外一个文件
2. 参数:
-b:备份文件
[ root@szb test]
[ root@szb test]
patching file file3
[ root@szb test]
total 28
-rw-r--r-- 1 root root 141 Jun 21 16 :03 diff.log
-rw-r--r-- 1 root root 18 Jun 21 16 :04 file3
-rw-r--r-- 1 root root 26 Jun 21 15 :55 file3.orig
-rw-r--r-- 1 root root 18 Jun 21 15 :58 file4.bak
10)补充命令
1 . ls -R /etc/
2 . dmesg
2、文本处理工具grep
文本三剑客之一
grep命令
1. 作用:匹配文本中内容
2. 参数:
重点:
-i:忽略大小写
-n:显示匹配的行号
-c:统计匹配的行数
-o:仅显示被匹配的字符串
-v:显示不被pattern匹配的行
-e:实现多个选择的逻辑or关系
-A:after,后 # 行
-B:before,前 # 行
-C:context,前后各 # 行
-q:静默模式,不输出任何信息; # 根据$?条件判断是否匹配
-w;匹配整个单词
-E:使用ERE
-f:根据模式文件处理
示例:
[ root@szb test]
alias grep = 'grep --color=auto'
[ root@szb test]
2
[ root@szb test]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
szb:x:1001:1001::/home/szb:/bin/bash
[ root@szb test]
root:x:0:0:root:/root:/bin/bash
3、正则表达式
正则表达式(Regular Expression):使用特定的符号(元字符)表示特定的功能
1. 元字符详情:man 7 regex
2. 正则表达式:
标准正则表达式
扩展正则表达式
3. 从功能上可以分四类:
字符匹配
次数匹配
位置锚定
分组和逻辑组合
1)正则表达式
正则表达式:
1. 字符匹配
元字符列表:
. 表示任意单个字符
[ ] 表示指定范围内容的字符
[ ^ ] 排除 [ ] 内的字符以外的字符
[ :alnum: ] 代表大小写字母和数字
[ :alpha: ] 代表大小写字母
[ :lower: ] 代表小写字母
[ :upper: ] 代表大写字母
[ :blank: ] 代表空格和TAB
[ :digit: ] 代表数字, 0 - 9
[ :graph: ] 代表可打印的非空白字符
[ :print: ] 代表可打印的字符
[ :punct: ] 代表标点符号
注意:正则表达式需要用 "" 包裹起来;
2. 次数匹配
* 代表匹配 * 前面的字符出现了任意次,包括 0 次
\ ? 代表匹配其前面的字符出现了 1 次或者 0 次
\ + 代表匹配其前面的字符出现了至少 1 次
\ { m \ } 代表匹配其前面的字符连续出现了n次 , n为数字
\ { m , n \ } 代表匹配其前面的字符次数要大于等于m次,小于等于n次
\ { m , \ } 代表匹配其前面的字符次数要大于等于m次
\ { , n \ } 代表匹配其前面的字符次数要小于等于n次
3. 位置锚定
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^ PATTERN$ 模式匹配整行
^ $ 空行
^ [ :space: ] * $ 空白行
\ < 或 \ b 词首锚定,用于单词模式的左侧
\ > 或 \ b 词尾锚定,用于单词模式的右侧
\ < PATTERN > \ 匹配整个单词
4. 分组和逻辑处理
对于多个字符作为整体处理时,使用分组的元字符 \ ( PATTERN \ ) , 后面引用使用 \ 1 , \ 2 表示前面第一个分组,第二个分组,称为后向引用。
逻辑或: \ |
示例:
1 .字符匹配
[ root@szb ~]
[ root@szb ~]
2 .次数匹配
[ root@szb ~]
3 .位置锚定
[ root@szb ~]
[ root@szb ~]
[ root@szb ~]
4 .分组和逻辑或
[ root@szb ~]
[ root@szb ~]
[ root@szb ~]
2)扩展正则表达式
扩展正则表达式:
不需要 \ 对特殊字符进行转义
注意:使用egrep或者使用grep -E实现使用扩展正则表达式
1. 次数匹配
+
?
{ m }
{ m , n }
2. 分组
( )
3. 逻辑或 : |
4、vi/vim文本编辑器
1. 常用的文本编辑器:gedit、nano、sed等
注意:行结束符也算一个字符
2. vim 编辑器的三种工作模式:
普通模式
插入模式
命令模式
1)普通模式
1. 进入普通模式:vim file
2. 普通模式进入插入模式:a , i , o , A , I , O ; 返回普通模式:ESC
3. 普通模式进入命令模式:: ; 返回普通模式:ESC
普通模式:
1. hlkj:以字符为单位移动光标,分别代表左右上下
2. web:以单词为单位移动光标,分别代表词首,词尾,上一词首
3.0 ^ $:以行为单位移动光标,分别代表行首、行首、行尾
4. G / gg:以文章行号为单位移动光标,G前面加具体的行,gg代表第一行
5. ( 、 ) :以句子为单位移动光标,分别代表上一句、下一句
6. { 、 } :以段落为单位移动光标,分别代表上一个段落,下一个段落
7. HML:以当前屏幕为的行为单位移动光标,分别代表第一行,屏幕中间行,最后的行
8. ctrl + f / ctrl + b:以当前屏幕为单位移动光标,分别代表下移一屏幕,上一屏幕
9. ctrl + d / ctrl + u:以当前屏幕为单位移动光标,分别代表下移半个屏幕,上移半个屏幕
编辑操作:
1. x 剪切
2. p 粘贴;P会将内容插入到当前所在的上一行位置
3. ~ 当前光标所在英文大小写转换
4. J 将当前光标所在行的行位和行符删掉
5. r 替换一个字符
6. R 替换多个字符
7. d 删除;加上右箭头或l , 光标当前字符会被删除;加上左箭头或h,光标左边一个字符会被删除;dd删除当前所在行, 5 dd删除当前光标所在的 5 行内容
8. D 清除当前行所有内容,保留换行符
9. c 完成删除功能后vim将进入插入模式,d的话不会进入
10. u 撤销上一次编辑效果; 6 u回退 6 次编辑操作,U可以回退到所有编辑操作之前
11. ctrl + r 撤销之前的u回退操作
12. . 重复之前的命令; 6. 代表重复之前的操作 6 次
13. v 进入可视化编辑 ; V以行为单位进行选中
复制:跟d用法类型
y y$ y0 y ^
ye yw yy Y
2)命令模式
命令模式:
1. 冒号后输入一个数值号:直接跳转相应行的行首
2. : 3 d 删除第三行
3.3 , 5 d 代表删除第三行到第 5 行的内容
4. 点代表光标所在行,$文章最后一行, % ( 1 , $)代表全文
5. : / root / , 3 d 第一次出现root的行到第三行内容全部删除
6. : / root 查找文章中出现root的行
7. n / N 光标切换下一个匹配位置 / 上一个匹配位置
8. s / root / szb / g 将全文的root替换成szb,s替换(前面可加范围, 1 , 8 ),g全局,gc有选择的替换;替换内容可以后向引用
1、vim寄存器:除了匿名寄存器,还有26个,a-z;
"ayy(双引号为寄存器标识符,a为寄存器名称,后面则是具体的命令)
2、vim编辑多个文件
:next 切换下一个文件
:prev 切换上一个文件
:first 切换到第一个文件
:last 切换到最后一个文件
:wqall all代表一次退出所有文件
3、vim分屏显示
水平分隔: vim -o file1 file2
垂直分隔:vim -O file1 file2
4、vim配置文件
配置文件:/etc/vimrc
常用配置:
set ic 开启忽略大小写
set ai 开启自动缩进
set si 开启智能缩进
syntax on 开启语法高亮
set list 显示tab和换行符
5、案例
示例1:
文件中搜索关键词:grep
示例2:
用简单的命令将三个文档合并成一个文档
cat file1 file2 file3 > file4
示例3:
查看访问日志的访问次数最多的前三个ip
cut -d " " -f1 access_log | sort | uniq -c | sort -nr | head -n 3