一、基础正则表达式
1. 特殊符号
特殊符号 | 代表意义 |
---|---|
[:alnum:] | 代表英文大小写字符及数字,亦即 0-9, A-Z, a-z |
[:alpha:] | 代表任何英文大小写字符,亦即 A-Z, a-z |
[:blank:] | 代表空白键与 [Tab] 按键两者 |
[:cntrl:] | 代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等 |
[:digit:] | 代表数字而已,亦即 0-9 |
[:graph:] | 除了空白字符 (空白键与 [Tab] 按键) 外的其他所有按键 |
[:lower:] | 代表小写字符,亦即 a-z |
[:print:] | 代表任何可以被打印出来的字符 |
[:punct:] | 代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $... |
[:upper:] | 代表大写字符,亦即 A-Z |
[:space:] | 任何会产生空白的字符,包括空白键, [Tab], CR 等等 |
[:xdigit:] | 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字符 |
2. grep进阶选项
grep [-A] [-B] [--color=auto] '搜寻字串' filename 选项与参数: -A:后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来; -B:后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来; --color=auto 可将正确的那个撷取数据列出颜色
3. 基础正则表达式字符
RE 字符 | 意义 |
---|---|
^word | 待搜寻的字串(word)在行首 |
word$ | 待搜寻的字串(word)在行尾 |
. | 代表“一定有一个任意字符”的字符(需要跳脱字符) |
\ | 跳脱字符,将特殊符号的特殊意义去除 |
* | 重复零个到无穷多个的前一个 RE 字符 |
[list] | 字符集合的 RE 字符,里面列出想要撷取的字符 |
[n1-n2] | 字符集合的 RE 字符,里面列出想要撷取的字符范围 |
[^list] | 字符集合的 RE 字符,里面列出不要的字串或范围 |
{n,m} | 连续 n 到 m 个的“前一个 RE 字符” ,若为 {n} 则是连续 n 个的前一个 RE 字符,若是 {n,} 则是连续 n 个以上的前一个 RE 字符(需要跳脱字符) |
4. sed工具
sed [-nefr] [动作] 选项与参数: -n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。 -e:直接在命令行界面上进行 sed 的动作编辑; -f:直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作; -r:sed 的动作支持的是延伸型正则表达式的语法(默认是基础正则表达式语法); -i:直接修改读取的文件内容,而不是由屏幕输出; 动作说明:[n1[,n2]]function n1, n2:不一定会存在,一般代表“选择进行动作的行数”; function: a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行); c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行; d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p:打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行; s:取代,可以直接进行取代的工作哩,通常这个 s 的动作可以搭配正则表达式;
二、延伸正则表达式
RE字符 | 意义 |
---|---|
+ | 重复一个或一个以上的前一个 RE 字符 |
? | 零个或一个的前一个 RE 字符 |
| | 用或( or )的方式找出数个字串 |
() | 找出群组字串 |
()+ | 多个重复群组的判别 |
三、文件的格式化与相关处理
1. 格式化打印
“printf '打印格式' 实际内容 选项与参数: 关于格式方面的几个特殊样式: \a 警告声音输出 \b 倒退键(backspace) \f 清除屏幕 (form feed) \n 输出新的一行 \r 亦即 Enter 按键 \t 水平的 [tab] 按键 \v 垂直的 [tab] 按键 \xNN NN 为两位数的数字,可以转换数字成为字符。 关于 C 程序语言内,常见的变量格式: %ns 那个 n 是数字, s 代表 string ,亦即多少个字符; %ni 那个 n 是数字, i 代表 integer ,亦即多少整数码数; %N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点);
2. awk数据处理工具
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
-
处理流程:
-
读入第一行,并将第一行的数据填入 $0, $1, $2.... 等变量当中;
-
依据 "条件类型" 的限制,判断是否需要进行后面的 "动作";
-
做完所有的动作与条件类型;
-
若还有后续的“行”的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止;
-
-
内置变量
-
NF:每一行拥有的字段总数;
-
NR:目前所处理的行数;
-
FS:目前的分隔字符,默认为空白键;
-
-
逻辑运算字符
运算单元 代表意义 > 大于 < 小于 >= 大于或等于 <= 小于或等于 == 等于 != 不等于
3. 文件对比工具
-
diff:以行为单位对比两个文件之间的差异;
diff [-bBi] from-file to-file 选项与参数: from-file :一个文件名,作为原始比对文件的文件名; to-file :一个文件名,作为目的比对文件的文件名; from-file 或 to-file 可以 - 取代,那个 - 代表“Standard input”之意; -b:忽略一行当中,仅有多个空白的差异(例如 "about me" 与 "aboutme" 视为相同; -B:忽略空白行的差异; -i:忽略大小写的不同;
-
cmp:以字节段位对比两个文件之间的差异;
cmp [-l] file1 file2 选项与参数: -l:将所有的不同点的字节处都列出来。因为 cmp 默认仅会输出第一个发现的不同点;
-
patch:
patch -pN < patch_file <==更新 patch -R -pN < patch_file <==还原 选项与参数: -p:后面可以接“取消几层目录”的意思; -R:代表还原,将新的文件还原成原来旧的版本;
4. 文件打印准备
-
pr