简单的文本处理工具和正则表达式

一、文本工具

    在linux中,有很多优秀且功能强大的文本处理工具,对文件内容进行查找、替换、删除、排序等操作,是linux进行文本处理变得特别方便。日常工作中,经常会用文本处理进行日志分析,文本抽取等,所以掌握文本处理,将会对我们的工作起到极大的作用。

cat:查看文件

    cat [OPTION]…[FILE]…

    -n 显示每行编号

blob.png

    -E 显示行结束符

blob.png

    -A 显示所有控制符

blob.png

    -b 显示非空行编号

blob.png

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

more:分页查看文件

    more [OPTION…] FILE…

    -d 显示翻页和退出的提示

less:逐页查看文件或用STDIN输出

    查看时常用的快捷键

    /文本    搜索

    n/N     跳到上一个或下一个匹配的文本

    (man命令使用less分页器)

head:查看前文档的前十行内容

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

blob.png

    -[n] # 获取指定的前n行

blob.png

cut 抽取文本

    cut [OPTION]…[FILE]…

    -d DELIMITER 指定分隔符,默认下tab

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

    # 第#个字段

    #,#[,#…] 显示离散的多个字段

    #-# 显示连续的多个字段

    可以混合使用:#-#,#:例如1-3,5

    -c 按照字符切割

    –out-delimiter=STRING 指定输出分隔符

paste多个文件同行合并

    paste [OPTION]…[FILE]…

blob.png

    -d 指定分隔符

    -s 把所有的行合成一行显示

blob.png

wc:收集文本统计数据

    wc DIR 显示顺序为,行数、字数、字符数、文件名。

    -l 仅显示行数

    -w 仅显示单词总数

    -c 仅显示字数

    -m 仅显示数字符总数

sort:文本排序

    sort [OPTION] FILE(s) 在不改变原文件的情况下,把原文件中的内容显示在STDOUT

    -r 反向整理

    -n 按数字大小整理

    -f 忽略字符串大小写

    -u uniqe删除重复的行

    -t 使用指定的字段界定符,默认tab

uniq:从输入中删除连续重复的行

    -c 仅显示每行重复出现的次数

blob.png

    -d 仅显示重复过的行

    -u 显示不曾重复的行

    经常和sort一起使用

diff DIR1 DIR2:比较两个文件之间的差别,命令输出被保存到一个补丁文件中,使用-u选项可以输出diff格式的文件,适用于补丁文件。

patch:复制在其他文件中进行的改变

    -b 自动备份改变的文件

    

文件备份示例:

    $ diff -u f1 f2 > f.patch 

    $ patch -b f1 f2

grep:根据指定的模式对目标文件匹配过滤,打印想要的内容

    grep [OPTIONS] PATTERN [FILE…]

    –color=auto 对匹配到的文本着色显示,CentOS7默认执行

    -v 过滤掉匹配到的行,显示其他行

    -i 忽略字符的大小写

blob.png

    -n 显示匹配到的行号

blob.png

    -c 统计匹配的行数

blob.png

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

    -q 不显示任何内容

    -A # 显示匹配到的后#行

blob.png

    -B # 显示匹配到的前#行

    -C # 显示匹配到的先后#行

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

blob.png

    -w 整行匹配整个单词

    -E 使用ERE扩展正则表达式

sed:Stream EDitor,行编辑器

    sed是一种流编辑器,每次只处理一行内容,把当前处理的行存储在临时文件缓冲区中,称为“模式空间(pattern space)”,然后用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容没有任何改变。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

sed [OPTION]… 'script' inputfile…

常用选项:

    -n    不输出模式空间内容的自动打印

    -e    多点编辑

    -f /PATH/TO/SCRIPT_FILE    从指定文件读取脚本

    -r    支持使用扩展正则表达式

    -i    更改原文件(谨慎使用)

地址定界规则:

    (1)没有地址时,默认对全文处理

    (2)单行地址

        #    指定的行

        /PATTERN/    能被此模式匹配到的每一行

    (3)地址范围

        #,#    中间的所有行

        #,+#    指定行向下的几行

        /PART1/,/PAER2/

        #,/PART1/

    (4)~步进

        1~2 表示奇数行

        2~2 表示偶数行

编辑命令:

    d    删除模式空间匹配的行

    p    显示模式空间中的内容

    a\text    在匹配的行后面追加文本,支持/n实现多行追加

    i\text    在匹配到的行前面插入文本,支持使用\n实习那多行插入

    c\text    替换匹配到的单行或多行文本

    w /PATH/TO/FILE    保存模式匹配到的行到文件中

    r /PATH/TO/FILE    读取指定文件的文本至模式空间中匹配到的行后面

    =    为模式空间中的行打印行号

     !    模式空间中匹配到的行取反处理

    s///    查找并替换,可以使用其他分隔符,如s@@@,$$$

        g    行内全局替换

        p    显示成功替换的行

        w /PATH/TO/FILE    将替换成功的行保存至文件中

二、正则表达式

    正则表达式:有一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不再表示本身的字面意义,而是表示控制或通配的功能。Linux中,很多程序支持正则表达式,正则表达式一般分为,基本正则表达式和扩展正则表达式。

正则表达式元字符

blob.png

blob.png

位置锚定

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

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

    ^PATTERN$:匹配整行

        ^&:表示空行

        ^[[space:]]:表示空白行

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

    \>:词尾锚定,用于单词模式的右侧

    \<PATTERN>\:匹配整个单词

分组匹配:

    \(PATTERN\)可以将一个或多个字符捆绑在一起,当作一个整体进行处理。分组括号中的模式匹配到的内容会被正则表达式引擎记录内部的变量中,这些变量的命名方式为:\1,\2,,…可以用来引用括号中模式所匹配到的字符。其中,\1表示从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符。

    

    

    

    

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

(0)
zhanghuanyuzhanghuanyu
上一篇 2016-08-10 10:22
下一篇 2016-08-10 10:27

相关推荐

  • 8-10 bash变量浅谈

    8-10 作业 一、脚本 1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 3、编写脚本/root/bin/disk.…

    Linux干货 2016-08-15
  • Linux的启动流程

    启动流程  POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。 ROM: BIOS, Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 …

    Linux干货 2016-09-13
  • LVM 逻辑卷管理器-缩小LV容量及快照区的建立

    LVM 逻辑卷管理器-缩小LV容量 将/dev/sdb2分区抽离出来,缩小LV容量 (1)首先查看/dev/sdb2的容量大小 [root@centos6 ~]# df -h /mnt/lvm/ Filesystem        &nbs…

    Linux干货 2016-09-19
  • Nginx+Keepalived实现站点高可用

    Nginx+Keepalived实现站点高可用 vrrp 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引…

    Linux干货 2016-11-07
  • 一起学WINS系列(二)安装、配置

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159128  此系列第二节:安装服务端、配置客户端。          完整的WINS系统…

    Linux干货 2015-03-25
  • N28第五周

    1、简述rpm与yum命令的常见选项,并举例
    2、自建yum仓库,分别为网络源和本地源
    3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    4、简述sed常用操作命令,并举例

    Linux干货 2018-01-03