一、正则
基础正则表示法
| 符号 | 含义 |
|---|---|
| [] | 有一个的意思,[abc]表示有a或b或c中一个 |
| [^] | 反向选择,不包含 |
| [a-z] | -,指连续的a至z 26个字母 |
| ^ | 行首 |
| $ | 行尾 |
| 转义字符,跳脱字符 | |
| ^$ | 空白行 |
| . | 一个字符占位 |
| * | 重复前一字符0至多个 |
| {n,m} | 搜寻包含前一字符n至m个的字符串 |
延伸正则表示法
| 符号 | 含义 |
|---|---|
| + | 一个或一个以上的前一个RE字符 |
| ? | 零个或一个前一个RE字符 |
| | | 同时用(or)的方式查找多个字符串 |
| () | 包含。 |
| ()+ | 字符串拼接 |
二、文本操作指令
cut
- cut 以行为单位进行操作
| 关键字 | 操作 |
|---|---|
-d |
后面接分隔字符。与 -f 一起使用; |
-f |
依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思; |
-c |
以字符 (characters) 的单位取出固定字符区间 |
tee
- 双向输出重定向,可以stdin输出到屏幕与文件
| 选项 | 解释 |
|---|---|
-a |
以累加 (append) 的方式,将数据加入 file 当中 |
sed
- sed本身也是一个管线命令,以行为单位进行操作
- 可以分析stdin,能进行取代,删除,增加,撷取特定行
- 当文本行数上百万时,可用
-i指令代替vim直接修改部分文本内容
| 关键字 | 操作 |
|---|---|
| 格式 | sed [-nfer] 动作 |
-n |
使用slient模式,只将sed特殊处理的那一行(或动作)列出 |
-f |
将处理结果输出到文件,-f filename 则可以在文件内进行sed操作 |
-e |
直接在指令模式上进行sed,超过一个动作时每个动作前都需要-e |
-r |
sed的动作 支持延伸的正则表示法,默认是支持基础的正则 |
-i |
直接修改读取的文本内容 |
动作 |
[n1[,n2]]function,动作用单引号包裹, n1,n2表示执行动作的行。(^行首$行尾) |
a |
add,a 后接的字符串会在新的一行出现(当前行的下一行) |
i |
insert,i 后接的字符串会在新的一行出现(当前行的上一行) |
d |
delete,删除 |
s |
substitute,取代,语法同vim(s/目标字段/取代内容/g,可结合正则语法) |
p |
print,打印,常同-n 一起使用 |
printf格式化输出
| 关键字 | 含义 |
|---|---|
语法 |
printf '指定输出格式' 实际内容 |
| a | 警告声音输出 |
| 退格键(backspace) | |
| f | 清除屏幕(form feed) |
| 换行输出 | |
| 即Enter键 | |
| 水平的tab按键 | |
| v | 垂直的tab按键 |
| xNN | 将数字转换为字符,NN为两位数的数字 |
| %ns | C语言中,n为数字,s代表字符串 |
| %ni | C语言中,n为数字,i代表integer,整数, |
| %N.nf | C语言中,总共有N位,其中小数点后有n个数字 |
awk增强版cut
- 语法:
awk '条件1{动作1} 条件2{动作2}...' filename - 以行为一次处理单位
- 以行内字段为最小的处理单位
- 默认段之间是用空格或tab隔开的
- $n,n 为数字,代表行内第几个字段。$1/$2第一/二个字段
| 关键字 | 含义 |
|---|---|
条件 |
满足条件才会执行动作 |
filename |
需要处理的文件名 |
stdout |
awk也可读取前一个指令的sdtout |
指令间隔 |
有多个动作时,每个{}内的操作用; 或Enter隔开 |
| awk变量 | 含义 |
|---|---|
| NF | 每一行拥有的字段总数,即多少个$ |
| NR | 目前awk所处理的是第几行 |
| FS | 目前段之间分隔字符,默认是空格,手动指定FS=':' |
| "常量" | awk语句中常量用双引号包裹 |