正则表达式
基于一串特殊字符的排列,用以搜索/取代/删除一列或多列文字字符串
用于字符串处理,且只是一个字符串处理的标准依据
支持正则表达式的常用指令
grep,vi,sed,awk...
基础正则表示法
语系
语系不同,正则表现存在一定差异
语系无关的确定符号,避免语系对编码顺序的影响
[:alnum:]: 英文大小写字符以及数字 0-9/A-Z/a-z
[:alpha:]: 英文大小写字符 A-Z/a-z
[:blank:]: 空格建 Tab键
[:cntrl:]: 键盘上的控制按键
[:digit:]: 数字 0-9
[:graph:]: 空格符以外的其他所有按键
[:lower:]: 小写字符 a-z
[:print:]: 任何可以被打印的字符
[:punct:]: 标点符号
[:upper:]: 大写字符 A-Z
[:space:]: 任何可以产生空格的字符
[:xdigit:]: 16进制数字类型 0-9 A-F a-f
字符汇总
^word: 待搜寻的字符串在行首
word$: 待搜寻的字符串在行尾
.: 一个任意字符
\: 转义字符,去除特殊字符含义
*: 0到无穷个前一个字符
[list]: 列出需要匹配的字符
[n1-n2]: 列出需要匹配的字符范围
[^list]: 取反
\{n,m\}: 连续n到m个前一个字符
\{n\}:连续n个前一个字符
\{n,}\: 连续n个以上前一个字符
延伸正则表示法
+:1到无穷个前一个字符
?: 0个到1个前一个字符
|: 或的方式匹配多个字符串
(): ()括起部分的匹配
()+: ()括起部分匹配 1到多次
egrep: grep预设基本正则表示法,grep -E
sed指令工具
管线指令,支持正则,用于数据内容 取代/删除/新增/截取等
sed [-nefri] [动作]
-n:安静模式 只列出sed处理的行
-e: 执行sed的动作编辑 可省略 可用于指定多个动作
-f: 从指定文件中读取 sed的动作
-r: 设置sed动作支持延申正则语法
-i: 直接修改读取的文件内容
动作 [n1[,n2]]function
n1,n2: 指定行
function
a: 新增 在指定行的后一行新增字符串
c: 取代 字符串取代指定行
d: 删除
i: 插入 指定行的前一行新增字符串
p: 打印 将指定行打印 配合-n使用
s: 取代 搭配正则使用 1,20s/oldstr/newstr/g 解析处理具体行的数据
printf: 格式化输出
printf '打印格式' 数据内容
特殊样式
\b: 退格键 backspace
\f: 清除屏幕
\n: 输出新的一行
\r: Enter键
\t: 水平TAB键
\v: 垂直TAB键
\xNN: NN两位数字,转换成字符
变量格式
%ns n个字符
%ni n位数字
%N.nf 浮点数 N位数字 其中n位小数
awk: 数据内容处理工具 管线命令
awk '[BEGIN{动作}] 条件类型1{动作1} 条件类型2{动作2}...[END{动作}]' fileName
以行为一次处理单位,以字段为最小处理单位
NF: 每一行字段数
NR: 当前行号
FS: 分割字符,默认空格
$0: 整行数据变量名
$n: 单行中第n个字段的变量名
支持逻辑运算符
print/printf
{}中指令分割: ; 或者 Enter
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 %10d %10.2f\n",$1,$2,$3,$4,total}
文件比对工具
diff: 纯Ascii文档比对工具 行为单位比对
patch:补丁制作
cmp:字节为单位比对