一、正则
基础正则表示法
符号 | 含义 |
---|---|
[] | 有一个的意思,[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 | 警告声音输出 |
\b | 退格键(backspace) |
\f | 清除屏幕(form feed) |
\n | 换行输出 |
\r | 即Enter键 |
\t | 水平的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语句中常量用双引号包裹 |