>>>文本处理工具<<<
一:文本查看(cat、less、more、head、tail、cut、paste)
cat (常用于显示内容较少的文本)
功能:查看文件内容,创建文件,文件合并,追加文件内容
选项(options):
①查看文件内容:
-A = -vte 显示文件所有内容(包括回车[$]和特殊字符)
-n 显示行编号,空白行也编号 联想:nl filename 也能显示文本文件的行号偶
-b 显示行编号,但对空白行不编号
-e/E 在输出内容的每一行后加上$(换行符)符号
-s 合并连续空白行
-t/T 显示tab(^I)
-v 显示非打印字符串
–version 显示版本信息并退出
②创建文件并写入文件内容(与重定向>配合使用):
语法:cat>filename<<endmark
(filename 新创建的文件名
endmark 结束标志,当输入endmark时自动退出编辑)
③文件合并(与重定向>配合使用)
cat f1 f2>f3 将f1、f2文件内容写入到f3中(覆盖f3原有内容)
cat f1 f2>>f3 将f1、f2文件内容写入到f3中(保留f3原有内容)
④追加文件内容(与重定向>配合使用)
cat>>filename<<endmark
1.功能:
- 逐页显示文件内容
- 启动时就加载整个文件,并能够搜索字符串和跳行
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
Ctrl+F : 向下滚动一屏
V 调用vi编辑器
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
head
-n 行号 / -行号 显示前n行
-c 以字节为匹配单位,显示前n个字节
tail
-n 行号 / -行号 显示后几行
日志监控用法:
追加信息到file1文件中
再打开一个终端,利用 tail -f file1 来实时追踪file1的变化
cut(常与tr一起连用)
截取某行:cut -fn
截取连续几行:cut -fm-n
eg: cut -d: -f1,3 –output-delimiter=’|’ /etc/passwd 将原有:替换成 |
=
paste 合并文件内容
paste file1 file2
-d 指定分隔符(默认到TAB)
-s 所有行合并成一行显示(合并单个文件)
二:文本分析工具(wc、sort、diff与patch)
WC (文本数据统计工具)
1.功能:
计算单词总数、行总数、字节总数、字符总数
※ wc file 图二所示结果依次是: 行数 单词数 字节数($、^I等其他隐藏字符也算一个字节偶)
图一
图二
2.options:
-l 总行数
-w 单词总数
-c 字节总数
-m 字符总数
sort(默认升序)
1.options:
① sort -t符号m -kn -n 以符号m为间隔符,取第n列按数字大小对文本进行排序
sort -t: -k3 -n /etc/passwd 根据用户UID大小对用户进行默认排序
②与uniq搭配使用,对有分散的重复行文本内容排序,例题:
请对将此字符串:welcome to magedu linux 中的每个字符
去重并排序,重复次数多的排到前面
解题思路: 输出welcome to magedu linux–>利用grep竖向输出字母–>sort对字母进行排序(默认升序)–> uniq -c 计算每个连续重复行出现次数(谨记:必须先用sort将分散的重复行变为连续行才能用 uniq -c 进行统计)–>再次利用 sort -rn 将其按照数字大小对其降序排列
echo welcome to magedu linux| grep -o [[:alpha:]]| sort|uniq -c|sort -rn
uniq (将连续重复行显示为一行)
1.options:
-c 将连续行显示为一行,并显示连续行出现的次数(如下图)
-d 仅显示连续重复行
-u 仅显示不连续重复的行
2.常见用法:
与sort配合使用(见sort常见用法②例题)
diff与patch(生成补丁文件并为原始文件打补丁)
※diff (比较两文件不同)
options:
-u 输出统一的diff文件(这就是我们常说的补丁文件了!!!!)
※patch(为原始文件打补丁 谨慎使用)
用法:
patch -b 原始文件 补丁文件 给文件打补丁
>>>正则表达式<<<
一:什么是正则表达式?
正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串
二:基础正则表达式(grep)
1、grep 基本正则表达式
①功能:
显示匹配信息所在行
②options:
-o 只显示匹配到的行
eg:
-v 只显示未匹配到的行
-e 或
eg:grep -e “cat” -e “dog” file1 显示含有cat或dog的行
-w 匹配整个单词(精确查找)
-c 统计匹配的行数
-n 显示匹配结果的行号
-q 静默模式,不显示匹配结果
-A n 同时显示匹配到的行与它的后n行
-B n 同时显示匹配到的行与它的前n行
-C n 同时显示匹配到的行与它的前后n行
-E =egrep
-F =fgrep
-i 忽略字符大小写
–color=auto
2、正则表达式中元字符分类
- 字符匹配
- 匹配次数
* |
匹配字符任意次(包括0次,尽可能长的匹配) |
.* |
任意长度的任意字符 |
\? |
0或1次 |
\+ |
>=1次 |
\{n\} |
匹配n次 |
\{m,n\} |
匹配m-n次 |
\{,n\} |
<=n次 |
\{m,\} |
>=m次 |
- 位置锚定
^ 行首锚定
$ 行尾锚定
\< 词首锚定
\> 词尾锚定
\< \>
- 分组
① \(string\) 同时匹配多个字符
② 后向引用: \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
③ \| 逻辑 “或”
3、egrep 拓展的正则表达式
字符匹配 |
. 任意单个字符 |
[] 指定单个字符 |
|
[^] 补集 |
|
次数匹配 |
{n} n次 |
{m,n} m-n次 |
|
* (0,+∞) |
|
? 0或1 |
|
+ 大于等于1 |
|
位置锚定 |
^ 行首 |
$ 行尾 |
|
\< 词首 |
|
\> 词尾 |
|
分组 |
() |
\1,\2,\3……. 后向引用前面所匹配的字符串 |
|
或 |
a|b a或b |
C|cat C或cat |
|
(c|C)at Cat或cat |
原创文章,作者:yunyunyu,如若转载,请注明出处:http://www.178linux.com/83117