文本处理工具

1.cat
主要三大功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename << EOF ….>EOF (只能创建新文件,不能编辑已有文件);cat向已经存在的文件追加内容:cat >> file <<EOF…>EOF
3.将几个文件合并为一个文件:cat file1 file2 > file;cat 把一个或多个已经存在的文件内容,追加到一个已存在的文件中: cat file1 file2 file3 >> file4
ps:>是创建,>>是追加
命令参数:
cat [option] filename
cat -v: 显示非打印字符
-E :显示行结束符$
-T :显示TAB
-n :对显示出的每一行进行编号,显示行号
-s :将连续的重复空行变成一行
-A = -vET:  显示所有控制符

-b :非空行编号

2.more
功能:more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以分页来查看文件的内容,还支持直接跳转行等功能。
命令参数:
more [optiions…] file
+n :从笫n行开始显示
-n :定义屏幕大小为n行,即每屏显示n行。(屏幕最下面显示了该屏展示的内容占文件总行数的比例,按 Ctrl+F 或者 空格键 将会显示下一屏5条内容,百分比也会跟着变化。)
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c :从顶部清屏,然后显示
-d :提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l :忽略Ctrl+l(换页)字符
-p :通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s :把连续的多个空行显示为一行
-u :把文件内容中的下画线去掉
 
3.less
功能:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。(一页一页的查看文件或STDIN(标准输入)输出)

命令参数:
-b <缓冲区大小>: 设置缓冲区的大小
-e :当文件显示结束后,自动离开
-f :强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g :只标志最后搜索的关键词
-i :忽略搜索时的大小写
-m :显示类似more命令的百分比
-N :显示每行的行号
-o <文件名> :将less 输出的内容在指定文件中保存起来
-s :显示连续空行为一行
-S :行过长时间将超出部分舍弃
-x <数字> :将“tab”键显示为规定的数字空格
4.head
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
命令参数:
head -n 数字 filename      显示前 n行
-n 行号                         显示前n行
– 行号                           显示前n行
-c 字节数                      显示前n个字节
-v                               显示文件名
-q                               隐藏文件名
显示文件的除了最后n个字节以外的内容 ,命令:head -c -数字 filename
输出文件除了最后n行的全部内容,命令:head -n -数字 filename
5.tail
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
命令参数:
tail -c <数目> :显示后_字节数
-n <行数> :显示后_行数
— <行号> :显示后_行
-f :循环读取,动态显示
-q :不显示处理信息
-v :显示详细的处理信息
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, –quiet, –silent 从不输出给出文件名的首部
-s, –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
6.cut
功能:cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
命令主要参数:
cut [option] [file]
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指 定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符,(只能在-d后面设置一个空格,不许设置多个空格,因为cut只允许间隔符是一个字符)。
-f :与-d一起使用,指定显示哪个区

-n : 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节 落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该 字符将被排除。

例子:

1.

文本处理工具

(-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。两种情况下,都包括了第三个字节“c”。执行who|cut -b -3,3-,是输出整行,不会出现连续两个重叠的c的。)

2.

因为-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则用域。

cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”。
文本处理工具
(用-d来设置间隔符为冒号,然后用-f来设置要取的是第一个域,再按回车,所有的用户名就都列出来了。在设定-f时,也可以使用例如3-5或者4-类似的格式)

3.

设定一个空格为间隔符 :cut -d ‘ ‘ -f1
两个单引号之间可确实要有一个空格,只能在-d后面设置一个空格,不许设置多个空格,因为cut只允许间隔符是一个字符。
7.paste
功能:paste 指令会把每个文件以列对列的方式,一列列地加以合并。
命令参数:
-d<间隔字符>或–delimiters=<间隔字符> : 用指定的间隔字符取代跳格字符。
-s或–serial  : 将每个文件合并成行而不是按行粘贴
–help  :在线帮助。
–version:显示帮助信息。
[file…] :指定操作的文件路径
– :使用标准输入
语法:
paste f1 f2 [f3] 合并制定文件的内容
paste -s f1 将文件内容变成一行显示 也可以用 tr ‘\n’ ‘\t’ 实现
paste -d “” f1 f2 [f3] 合并后的分隔符,默认TAB

8.wc

功能:wc即Word count,为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。(统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。)
命令参数:
语法:wc 命令
-c :统计字节数。
-l :统计行数。
-m :统计字符数。这个标志不能与 -c 标志一起使用。
-w :统计单词数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L :打印最长行的长度。
-help :显示帮助信息
–version :显示版本信息
wc  行数   单词数   字节

9.sort

功能:依据不同的数据类型进行排序
命令参数:

-r :执行反方向(由上至下)整理 (sort默认的排序方式是升序)

-n :执行按数字大小整理
-f :选项忽略(fold)字符串中的字符大小写
-u :选项(独特,unique)删除输出中的重复行
-t c :选项使用c做为字段界定符(-t :分隔符,默认是用 [tab] 键来分隔)
-k X :选项按照使用c字符分隔的X列来整理能够使用多次
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
例子:

找出分区利用率最大的值

文本处理工具

10.uniq
功能:从输入中删除前后相接的重复的行
命令参数:
uniq [option] [file]
-c: 显示每行重复出现的次数
-d:仅显示重复过的行
-u:仅显示不曾重复的行(连续且完全相同方为重复)
-i : 忽略大小写字符的不同
常和sort命令一起配合使用(为了使uniq起作用,所有的重复行必须是相邻的
sort userlist.txt | uniq -c

11.diff  patch
功能:diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。
命令参数:
diff file1 file2 比较file1和file2的区别
diff -u f1 f2 > diff.log 生成补丁
diff f2 f2.rm 比较还原回来的新文件与被删除的文件,发现没有区别。

patch -b f1 diff.log    通过补丁还原文件 ,生成的f1为原来的f2,fi.orig为原f1

mv f2 f2.rm 相当于删除了文件。
mv f1 f2 还原原始的新文件名
mv f1.orig f1 还原原始的旧文件名

12.grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
命令参数:
grep [options] pattern [file]
–color=auto 将匹配的结果着色显示
-v 反向匹配、
-i 忽略大小写
-n 显示的结果前增加行号
-c 仅显示匹配到结果的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息 或者 &> /dev/null
-A# 显示关键字行及向后#行
-B# 显示关键字行及向前#行
nmap -v -sP 172.17.252.0/24 |grep -B1 “Host is up”|grep for |cut -d” ” -f5 |wc -l
-C# 显示关键字向前#行,当前行,及向后#行
-e 关键字1 -e 关键字2 实现多个选项间的逻辑or关系
-w 匹配整个单词
-E 使用扩展正则表达式 或egrep
-F 不使用正则表达式 或 fgrep
13.pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^: 匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<: 从匹配正则表达 式的行开始。
\>: 到匹配正则表达式的行结束。
[ ]: 单个字符,如[A]即A符合要求 。
[ – ]: 范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。: 所有的单个字符。
* : 有字符,长度可以为0。

14、正则表达式

(1)

. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 或 [0-9a-zA-Z]
[:alpha:] 或 [a-zA-Z]
[:upper:] 或 [A-Z]
[:lower:] 或 [a-z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字 或[0-9]
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

(2)

*  匹配前面的字符任意次,包括0次

            贪婪模式:尽可能长的匹配

        .*  任意长度的任意字符

        \?  匹配其前面的字符0 或1次

        \+  匹配其前面的字符至少1次

        \{n\}  匹配前面的字符n次

        \{m,n\}  匹配前面的字符至少m 次,至多n次

        \{,n\}  匹配前面的字符至多n次

        \{n,\}  匹配前面的字符至少n次

15.egrep扩展的正则表达式
扩展的正则表达式
egrep = grep -E
egrep [options] pattern [file]
扩展正则表达式的元字符:
字符匹配:
. 任意单个字符
[ ] 指定范围的字符
[^] 不在指定范围的字符
次数匹配:
* : 匹配前面字符任一次
?:0或1次
+ : 1次或多次
{m} : 匹配m次
{m,n} : 至少m,至多n次
位置锚定:
^ : 行首
$ :行尾
\ <, \b :语首
\> ,\b :语尾
分组:
()
后向引用 :\1 ,\2
或者:
a|b :a或 b
C | cat :C或
cat
(C|c)at :Cat 或cat

原创文章,作者:Light Yagami,如若转载,请注明出处:http://www.178linux.com/83164

(0)
上一篇 2017-07-29 20:16
下一篇 2017-07-29 21:07

相关推荐

  • 马哥教育网络班21期-第六周课程练习

    第六周作业 请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@qq tmp]# cp /etc/rc.d/rc.sysinit /tmp [root@qq&nbsp…

    Linux干货 2016-08-02
  • 网络25期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-11-14
  • Homework Week-13 samba、vsftp文件共享

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;   3)添加s…

    Linux干货 2016-12-05
  • 磁盘及文件系统管理—第二篇

    挂载配置文件 每行定义一个要挂载的文件系统及相关属性     使用mount -a挂载/etc/fstab文件中所定义的文件系统     配置文件格式:         一共分为6个字段: &nbsp…

    Linux干货 2016-08-30
  • Linux发展史

    前言     Linux属于类Unix中的一个当下比较流行的操作系统,占领了服务器大部分江山。作为一个专业复杂的操作系统,了解其发展过程是很有必要的。如果要讲linux的历史,肯定是从三个团体开发Multics系统说起,贝尔实验室离开Multics项目后,Tompson和他的同事一起创造了unix,而在unix的各种分支中BSD则是迅速发…

    Linux干货 2016-10-14
  • Select、Case

    select循环与菜单 select循环主要用于创建菜单,按数字排序list指定的顺序排序,并列出在标准输出,利用PS3列出提示符进行输入选择 用法: select VARIABLE in list  do     循环体命令 done PS3提示语定义: 在脚本中脚本代码的第一…

    Linux干货 2016-08-21