支持正则表达式的命令: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是一门编程语言,关键字如下:
变量 | |
$N | N=0表示行记录,N=1,2...表示列 |
NF | 每行的单词数,单词的分隔符是FS |
FS | 单词分隔符,默认是空格,指定分隔符的用法是BEGIN{FS="XXX"} |
NR | 行号 |
判断条件 | |
BEGIN | 在awk读入文件之前 |
END | 在awk读完文件之后 |
动作 | |
打印,后接变量或者字符串 | |
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