一、正则
基础正则表示法
符号 |
含义 |
[] |
有一个的意思,[abc]表示有a或b或c中一个 |
[^] |
反向选择,不包含 |
[a-z] |
-,指连续的a至z 26个字母 |
^ |
行首 |
$ |
行尾 |
\ |
转义字符,跳脱字符 |
^$ |
空白行 |
. |
一个字符占位 |
* |
重复前一字符0至多个 |
|
搜寻包含前一字符n至m个的字符串 |
延伸正则表示法
符号 |
含义 |
+ |
一个或一个以上的前一个RE字符 |
? |
零个或一个前一个RE字符 |
| |
同时用(or)的方式查找多个字符串 |
() |
包含。 |
()+ |
字符串拼接 |
二、文本操作指令
cut
关键字 |
操作 |
-d |
后面接分隔字符。与 -f 一起使用; |
-f |
依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思; |
-c |
以字符 (characters) 的单位取出固定字符区间 |
tee
选项 |
解释 |
-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语句中常量用双引号包裹 |