文本处理工具

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)
Light YagamiLight Yagami
上一篇 2017-07-29
下一篇 2017-07-29

相关推荐

  • 111-puppet

    一.运维层次分类 OS Provision:

    2016-12-04
  • 携程全站瘫痪引发的思考

       为今年5月冠上多事之夏的名头已是无可厚非的一件事,自支付宝光纤被挖断后,携程又暴出全站瘫痪的风波,从5/28 11:00开始,直到晚上11:29分才全面恢复.互联网也是谣言四起,纷纷猜测百度腾讯谁会是下一个灾难的受害者。暂切抛开这些玩笑言论,就携程本次事情引发的思考太多,前车之鉴后事之师,如果携程的事情发生到我们身上,我们该怎么办,…

    Linux干货 2015-06-03
  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19
  • Linux nginx服务之反向代理

                       Linux nginx服务之反向代理 Nginx服务之反向代理: GSLB:Global Service LB 全局服务负载均衡: SLB:Service LB 应用程序发布: 灰度模型:   ngx_http_…

    系统运维 2016-11-18
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who (unknown) :0           2016-12-15 2…

    Linux干货 2016-12-20
  • CentOS 7 RPM包方式安装LAMP

    细节要求: (1) 三者分离于两台主机; (2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress; (3) 提供xcache加速; (4) 为phpMyAdmin提供https虚拟主机; 一、准备CentOS 7主机环境以及Repo仓库提供基于rpm安装包方式的程序包安装源 安装主机程序包规划: 主机1:web-serve…

    Linux干货 2017-02-16