Linux正则表达式与文件格式化处理
基础正则表达式
- 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。
- 正则表达式的字符串表示方式按照不同的严谨度而分为基础正则表达式与扩展正则表达式。使用正则表达式时,需要特别留意当时环境的语系为何,否则可能会发现与别人不相同的选取结果。
grep命令最重要的功能就是字符串数据的对比,然后将符合用户需求的字符串打印出来。grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的。
grep [-A] [-B] [--color=auto] '搜寻字符串' filename
-A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面可加数字,为before的意思,除了列出该行外,前面的n行也列出来^符号在字符集合符号[]之内之外表示的意思是不同的,在内表示“反向选择”,在[]之外则代表定位在行首的意思。$则代表行尾符的意思。{}可以限制一个范围区间内的重复字符数,但因为{与}的符号在shell内是有特殊意义的,因此我们必须要使用转义字符\来让它失去特殊意义才行。- 正则表达式的特殊字符与一般在命令行输入命令的“通配符”并不相同
sed命令本身是个管道命令,可以分析standard input,而且sed还可以将数据进行替换、删除、新增、选取特定行等功能,甚至还可以直接修改文件内容(危险操作)。sed之后接的动作务必以''两个单引号括住。
sed [-nefr] [动作]
扩展正则表达式与文件的格式化与相关处理
grep默认仅支持基础正则表达式,如果要使用扩展型正则表达式,我们可以使用grep-E或者直接使用别名egrep。-
扩展型正则表达式可以通过组功能“ ”来进行一次查找,那个在单引号内的管道意义为“或or”。 - 格式化打印:
printf
printf '打印格式' 实际内容,与C语言中的printf函数输出格式相近,由于printf不是管道命令,因此我们得要通过将文件内容先提出来给printf作为后续的数据才行。 awk适合小型的数据处理,awk主要是处理每一行字段内的数据,而默认的字段的分隔符为空格键或[tab]键。在每一行的每个字段都是有变量名称的,那就是$1,$2等变量名称。awk中NF表示每一行拥有的字段总数,NR表示目前awk所处理的是“第几行”数据,FS则表示目前的分隔字符,默认是空格键。我们可以使用BEGIN关键字预先设置awk的FS等变量。- 所有
awk的动作,即在{}内的动作,如果需要多个命令辅助时,可利用;间隔,或者直接以[enter]按键来隔开每个命令,与bash、shell的变量不同,在awk中,变量可以直接使用,不需加上$符号 diff命令通常是用在同一文件的新旧版本区别上。
diff [-bBi] from-file to-file
-b:忽略一行中仅有多个空白的区别
-B:忽略空白行的区别
-i:忽略大小写的区别cmp主要利用“字节”单位去比较两个文件,cmp也可以用来比较二进制文件patch可以使用diff命令生成的.patch补丁文件将旧的文件升级成新的文件,也可以还原。
patch -pN < patch_file更新
patch -R -pN <patch_file还原pr命令用于文件打印准备