Linux正则表达式和文件格式化处理

正则表达式

    正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串。正则表达式的字符串表示方式依照不同的严谨度而分为基础正则表达式与扩展正则表达式。

什么是正则表达式

    正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。正则表达式基本上是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理之用。

基础正则表达式

    一些特殊符号如下标所示:
图1
    基础正则表达式特殊字符如下表所示:
图2
图3

sed工具

    sed本身是一个管道命令,可以分析stdin的,而且sed还可以将数据进行替换、删除、新增、选取特定行等的功能。

sed [-nefr] [动作]
参数:
-n:使用安静模式。一般的sed用法中,所有来自stdin的数据一般都会被列出在屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行才会被显示出来。
-e:直接在命令行模式上进行sed的动作编辑。
-f:直接将sed的动作写在一个文件内,-f filename则可以执行filename内的sed动作。
-r:sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)。
-i:直接修改读取的文件内容,而不是由屏幕输出。
动作说明:[n1[,n2]] function
n1,n2:不见得会存在,一般代表选择进行动作的行数。
function有下面这些参数:
a:新增,a后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行);
c:替换,c后面可以接字符串,这些字符串可以替换n1,n2之间的行;
d:删除,d后面通常不接任何参数
i:插入,i后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
p:打印,将某个选择的数据打印出来;
s:替换,可以直接进行替换的工作。

扩展正则表达式

    扩展型正则表达式可以通过组功能“|”来进行一次查找。扩展型正则表达式的特殊字符如下表所示:
图4

文件的格式化处理

格式化打印:printf

    printf并不是管道命令,它可以将数据进行格式化的输出。

printf ‘打印格式’ 实际内容
参数:
关于格式方面的几个特殊样式:
\a:警告声音输出
\b:退格键
\f:清除屏幕
\n:输出新的一行
\r:亦即Enter键
\t:水平的[tab]\v:垂直的[tab]\xNN:NN为两位数的数字,可以转换数字成为字符

数据处理工具:awk

    awk是一个数据处理工具,比较倾向于将一行分为数个“字段”来处理。

awk ‘条件类型1{动作1} 条件类型2{动作2} …’ filename

    awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键。awk的内置变量如下表所示:
图5

文件比较工具:diff、cmp、patch

    在同一个软件的不同版本之间,比较配置文件与源文件的区别,会使用到文件比较工具。

  • diff
        diff就是用在比较两个文件之间的区别的,并且是以行为单位来比较的,一般是在ASCII纯文本文件的比较上。diff通常是在同一的文件(或软件)的新旧版本区别上。
diff [-bBi] from-file to-file
参数:
from-file:一个文件名,作为欲比较文件的文件名
to-file:一个文件名,作为目的比较的文件名
-b:忽略一行当中仅有多个空白的区别
-B:忽略空白行的区别
-i:忽略大小写的不同
  • cmp
        cmp主要利用“字节”单位去比较,也可以比较二进制文件。
cmp [-s] file1 file2
参数:
-s:将所有不同点的字节处都列出来。cmp默认仅会输出第一个发现的不同点。
  • patch
        这个命令与diff有密不可分的关系。利用diff分析版本的区别,制作补丁文件,通过patch来安装补丁。
patch –pN < patch_file  <==更新
patch –R –pN < patch_file        <==还原
参数:
-p:后面的N表示取消基层目录的意思
-R:代表还原,将新的文件还原成原来旧的版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值