Grep
查找
grep [-A n] [-B m] [–color=auto] str filename
-A n:显示后n行
-B m:显示前m行-你
-n:显示行号
-v:反向选择
-i:忽略大小写
[]:至少匹配[]内的一个字符
^:在中括号内表示不含[]内字符,中括号外表示以字符开头
{n,m}:匹配n到m个字符
.:随意一个字符
*:重复0次或多次
PS:*在通配符中表示0到无限多个任意字符
ls -l a=ls | grep ‘^a’*
sed
sed [参数] 动作
-n: 只显示经过sed处理的行
-e:直接在命令行模式进行sed动作编辑
-f:直接将sed动作写在一个文件内,-f filename 可以执行文件内的动作
-r:sed动作扩展到正则表达式语法
-i:直接修改文件内容,而不是输出到屏幕
动作说明:
[n1,[n2]] function
n1,n2:行数
a str:新增str,新增在下一行
c str:替换,替换n1到n2之间的行
d :删除
i:插入,插入上一行
p:打印
s:替换,可搭配正则表达式
替换实例 sed ‘s/旧字符/新字符g’
ifconfig | grep ‘inet addr’ | sed ‘s/^.*addr://g’ | sed ‘s/Mask.*$//g’
扩展正则表达式
awk数据处理工具
awk以行为一次处理单位,字段为最小处理单元
awk ‘类型条件1{动作1} 条件类型2{动作2} …’ filename
例:
- cat /etc/passwd | awk ‘{FS=“:”} $3<10 {print $1 “\t” $3}’
- cat pay.txt|awk ‘NR==1 {printf “%10s %10s %10s %10s %10s\n”,$1,$2,$3,$4,‘Total’}
NR>=2 {total=$2+$3+$4
printf “%10s %10d %10d %10s %10.2f\n”,$1,$2,$3,$4,total}’ - cat pay.txt|awk ‘if(NR==1) {printf “%10s %10s %10s %10s %10s\n”,$1,$2,$3,$4,‘Total’}
NR>=2 {total=$2+$3+$4
printf “%10s %10d %10d %10s %10.2f\n”,$1,$2,$3,$4,total}’
文本比较 diff,cmp
- diff
以行为单位进行比较,同一文件不同版本的比较,一般用在纯ASCII码的文件上
diff [参数] from-file to-file
-b:忽略一行中仅有的几个空格
-B:忽略空白行的区别
-i:忽略大小写的不同 - cmp
以字节为单位进行比较
cmp [-s] file1 file2
-s:将所有的不同点的节点都列出来,默认情况下只输出第一个 - patch
patch文件制作
diff -Naur old_file new_file > file.patch
patch更新文件:patch -pN <file.patch
patch还原文件:patch -R -pN < file.patch
-p:后面的N表示取消几层目录的意思
-R:代表还原,将新文件还原为旧版本