正则表达式

来源:互联网 发布:健康的生活方式知乎 编辑:程序博客网 时间:2024/06/14 12:35
支持正则表达式的命令:grep、vi、sed、awk

1、grep
grep -【nABC】 数字 字符串 文件
-n 显示行号
-A 把匹配到的行后面的n行也展示出来
-B 把匹配到的行前面的n行也展示出来
-C 把匹配到的行前后的n行也展示出来
grep中{}需要被转义成\{\}

2、sed
(1)新增
sed ‘第N行a 字符串’ 文件
在第几行之后新增一行字符串
若要新增多行,则在每一个新增的字符串后按反斜杠+Enter
(2)替换整行
sed ‘第N行c 字符串’ 文件
将第N行全部替换成字符串
(3)打印
sed -n ‘第M行,第N行p’ 文件
打印第M行到第N行的数据,加-n是为了只输出这几行

插曲:如何将换行符替换成空格?
这里介绍3种方法:
  • cat 文件 | tr '\n' ' '
  • cat 文件 | xargs
  • awk '{T=T" "$0} END{print T}' 文件

(4)替换字符串
sed 's/old/new/g' 文件
(5)直接修改原文件,而不输出到屏幕上
sed -i 命令 文件

3、文件的格式化与相关处理
(1)printf 格式化 打印内容
(2)常用的数据处理与统计工具 awk
awk '条件1 {} 条件2{} 条件3{}' 文件
awk是一门编程语言,关键字如下:
变量$NN=0表示行记录,N=1,2...表示列NF每行的单词数,单词的分隔符是FSFS单词分隔符,默认是空格,指定分隔符的用法是BEGIN{FS="XXX"}NR行号判断条件BEGIN在awk读入文件之前END在awk读完文件之后动作print打印,后接变量或者字符串printf格式化打印其他{}括起命令,里面可以使用if()判断条件,还可以使用;或者Enter分隔多个动作

4、文件对比命令
(1)diff
diff -【bBi】 from -/file to -/file
-代表stdin/stdout
-b 忽略一行中的多个空白
-B 忽略空白行
-i 忽略大小写
a新增d删除c修改<属于左边的内容>属于右边的内容
diff除了用来比较文件,还可以用来比较目录。
(2)cmp 比较的是字节
(3)patch
①patch一般与diff一起使用,用于比较文件版本新旧
diff -Naur old new > xxx.patch
xxx.patch是补丁文件
②patch -pN < 补丁文件 更新
patch -R -pN < 补丁文件 还原
-p 后面接数字,表示取消几层目录
-R 将新文件还原成旧文件
这个命令依赖于生成的补丁文件,原理是把old文件看成主干,new看成新分支,patch会将在new上所做的操作更新到old这个主干上。

5、打印文件命令 pr
0 0
原创粉丝点击