文本处理工具

文本处理工具

一、文本处理命令less,cat,more,sort

1.less

 less :一页一页地查看文件或STDIN 输出

 查看时有用的命令包括:

  /文本  搜索 文本

  n/N 个 跳到下一个 or  上一个匹配

  less 命令是man 命令使用的分页器

2.cat

文件查看命令:cat, tac,

cat [OPTION]… [FILE]…

-E:  显示行结束符$

-n:  对显示出的每一行进行 编号

-A :显示所有控制符

-b: 非空行编号

-s:   压缩连续的空行成一行

cat f1 f2 同列合并  paste f1 f2 同行合并

paste -d 分隔符   -s 所有行合并成一行  

3.more

 more:  分页查看文件

 more [OPTIONS…] FILE…

 -d:  显示翻页及退出提示

4.wc

wc 文件名 得到的是行数  单词数  字符数

图片1.png

 使用 -l 来只计数行数

 使用 -w 来只计数单词总数

 使用 -c 来只计数字节总数

 使用 -m 来只计数字符总数

   字符与字节不相同

5.sort

文本排序sort

把整理过的文本显示在STDOUT ,不改变原始文件

$ sort [options] file(s)

v 常用选项

Ü -r 执行反方向(由上至下)整理

Ü -n 执行按数字大小整理

Ü -f 选项忽略(fold )字符串中的字符大小写

Ü -u 选项(独特,unique )删除输出中的重复行

Ü -t c 选项使用c 做为字段界定符

Ü -k X 选项按照使用c 字符分隔的X 列来整理能够使用多次

例证:sort -t: -k 3 -n /etc/getent   /etc/getent中以:为分隔符的第三列的内容,按照内容数字大小进行排列,若要倒序排列则+r

图片2.png 

 

二、文件截取:headtail

1.head

head [OPTION]… [FILE]…

-c #:  指定获取前# 字节

-n #:  指定获取前#行 行

-#:  指定行数

2.tail

   tail [OPTION]… [FILE]…

   -c #:  指定获取后# 字节

   -n #:  指定获取后#

    -f:  跟踪显示文件新追加的内容, 常用日志监控

三、按列抽取:cut

     cut [OPTION]… [FILE]…

  -d DELIMITER:  指明分隔符,默认tab

   -f FILEDS:

   #:  # 个字段

   #,#[,#] :离散的多个字段,例如1,3,6

   #-# :连续的多个字段,  例如1-6

   混合使用:1-3,7

   -c 按字符切割

   –output-delimiter=STRING

 举例1cut  -d:  -f1,3,5-7  /etc/passwd

 以:作为分隔符,查看/etc/passwd中的第1,3,5-7列的内容

 举例2使用cut将电脑的IP地址提取出来。

图片3.png 

经过观察,这些信息极为不规则,没有明显的分隔符。这时们需要首先提取出IP地址所在的行,然后去定义一个合适的分隔符,再利用cut进行提取即可。(思路:化繁为简,化不规则为规则,这样才能更好的套用我们的命令模型)  图片4.png

四、按关键字抽取:grep

   作用:文本搜索工具,根据用户指定的“模式”对目标文

本逐行进行匹配检查;打印匹配到的行;

 –color=auto:  对匹配到的文本着色显示;

 -v:  显示不能够被pattern 匹配到的行;

 -i:  忽略字符大小写

 -n: : 显示匹配的行号

 -c:  统计匹配的行数

 -o:  仅显示匹配到的字符串;

 -q:  静默模式,不输出任何信息

 -A # after,  #行 行

 -B #: before,  #行 行

 -C # context,  前后各#行 行

 -e :实现多个选项间的逻辑or 关系

   grep e cat -e dogfile

 -w :整行匹配整个单词

 -E :使用ERE

 REGEXP :由一类特殊字符及文本字符所编写的模式,其中有

些字符(元字符)不表示字符字面意义,而表示控制或通配

的功能

v  程序支持:grep, vim, less,nginx等 等

v  分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep -E, egrep

v  正则表达式引擎:

采用 不同 算法,检查处理正则表达式的软件模块

PCREPerl Compatible Regular Expressions

   字符匹配:

     . :   匹配任意单个字符;

     [] :   匹配指定范围内的任意单个字符

     [^]  :匹配指定范围外的任意单个字符

     [:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:]

     [:punct:] [:space:]

  匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

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

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

.* :任意长度的任意字符

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

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

\{m\} :匹配前面的字符m

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

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

\{m,\} :匹配前面的字符至少m

  位置锚定:定位出现的位置

^ :行首锚定,用于模式的最左侧

$ :行尾锚定,用于模式的最右侧

^PATTERN$:  用于模式匹配整行

^$:  空行

^[[:space:]]*$  :空白行

\< 或 或 \b :词首锚定,用于单词模式的左侧

\> 或 或 \b :词尾锚定;用于单词模式的右侧

\<PATTERN\>

分组:\(\) :将一个或多个字符捆绑在一起,当作一个整体进

行处理,如:\(root\)\+

分组括号中的模式匹配到的内容会被正则表达式引擎记录

于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

\1:  从左侧起,第一个左括号以及与之匹配右括号之间

的模式所匹配到的字符;

实例: \(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

后向引用:引用前面的分组括号中的模式所匹配字符(而 而

非模式本身)

 

实例应用

  一、 tail可用于日志的监视

在命令行输入:tail -n 20  -f  /var/log/messsages  这样可以实时监测日志的变化。

图片5.png 

通过logger this is a test log来触发新日志的产生

图片6.png 

tail  -n  0  -f  filename &

 

 

二、比较两个文件之间的不同或者回复文件

diff -u a.txt  b.txt > diff.log

图片7.png 

图片8.png 

[root@centos6testdir]#diff  -u a.txt  b.txt >diff.log

图片9.png 

上述操作后,a.txtb.txt的差异记录在了diff.log

若之后,b.txt不小心删除掉了,则可以利用a.txtdiff.log来恢复b.txt文件。

此时用到patch命令,此时得到的a.txt文件,其内容实际就是误删除掉的b.txt文件的内容,而真正的a.txt文件的内容则保留在了a.txt.orig的文件中。

图片10.png 

图片11.png 

 

 

 

 

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

(0)
178babyhanggege178babyhanggege
上一篇 2016-08-08 09:22
下一篇 2016-08-08 09:43

相关推荐

  • mysql备份还原

    一、前言 数据对于一个公司来说有多重要这点不说大家也知道,数据还在,服务崩溃还可重建。为什么要备份?很简单,天灾人祸。比如硬件故障,软件故障,自然灾害,黑客攻击或自身误操作等因素。这时候备份,恢复数据就显得至关重要了。 二、基础概念 由于备份与恢复需要用到一些必要的知识,故在此先讲解下 2.1二进制日志 myql日志有多种,其中二进制日志文件对数据恢复有很大…

    Linux干货 2015-11-30
  • vim编辑器的使用

    vim          vim是一个类似于vi的文本编辑器,不过在vi的基础上增加了很多功能,在早起vim和Emacs编辑器打的很火热,在1999年被linuxwork文本编辑分类的优胜者,而vim屈居第二,但2000年vim赢得了salashdot beanie的最佳开放源代…

    系统运维 2016-08-09
  • MySQL/MariaDB数据库备份与恢复

    前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题。本文将讲解MySQL/MariaDB数据库的几种备份方法。 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:…

    系统运维 2015-05-23
  • centos6,7分区,格式,挂载

     内核及文件系统的组成部分  文件系统驱动:   centos6如果使用xfs系统    yum -y install xfsprogs  文件系统管理工具   mkfs创建文件系统 mkfs.ext3   创建:mkfs.文件类型(ext2,ext3,xfs..)  …

    Linux干货 2016-08-26
  • linux多网卡绑定

    为了增加网络牢固性,linux服务器通过多块网卡来实现网卡冗余或链路聚合、负载均衡的技术。网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援…

    系统运维 2016-06-23
  • 运维挖坑埋坑之旅—-413 Request Entity Too Large

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1575160        好久没写博文了,天天忙的喘不过来气。最近是该总结总结前段时间的工作了,顺便缓解下这两天的霉…

    Linux干货 2016-08-15