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

一、文本工具

    在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)
上一篇 2016-08-10 10:22
下一篇 2016-08-10 10:27

相关推荐

  • 排错

    把/etc/inittab  模式改为6模式 怎么修复 1 先把 vim /etc/inittab 打开 2 把/etc/inittab 模式改为6 3 reboot 4 在倒计时完之前按任意键 5按A进入 6 在quiet  命令后面写入 3  模式 重启 7把 vim /etc/inittab 打开 8 把/etc…

    Linux干货 2017-05-15
  • 关于 LVM 逻辑卷管理

                  逻辑卷管理 (LVM)    允许对卷进行方便操作的抽象层,包括从新设定文件系统的大小   允许在多个设备间重新组织文件系统将设备指定为物理卷用一个或者多个物理卷来创建一个卷组物理卷是用固定大小的物理区…

    系统运维 2016-09-02
  • 高级文件系统管理的相关理解

    1.RAID是什么     RAID:Redundant Arrays of Inexpensive Disks,是指由多个磁盘合成一个阵列,来提供更好的性能,冗余或者两者都提供。在生产生活中,通常一个硬盘往往不能满足我们的存储需要,这是就需要通过RAID磁盘阵列来对磁盘进行“扩容”,来满足我们的日常需要,相比较于单一…

    Linux干货 2016-08-30
  • Centos6启动流程详解

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

    2017-03-28
  • 三步走进行IP大揭秘

    跟随博主三步走进行IP大揭秘! 一、IP简介 1.ip地址:可以分为合法ip地址(公网ip地址)和私有ip地址, 合法ip地址主要应用于internet上的主机访问,而私有ip地址应用于局域网中计算机的相互通信。 2.ip地址的表示形式:分为二进制表示和点分十进制表示。 一般使用点分十进制表示,现在通常使用的ip地址长度均为32位,由四个八位域组成,可称为八…

    2017-09-02
  • FHS文件系统各目录功能

    FHS       Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。下为…

    Linux干货 2016-10-16