正则表达式即以行为单位,通过特殊符号查询删除替换某特定字符串的方法,在支持的工具里通用
基础正则表达式
语系
避免编码造成的区别,建议使用特殊符号
特殊符号 | 意义 |
---|---|
:alnum: | A-Z a-z 0-9 |
:alpha: | A-Z a-z |
:upper: | A-Z |
:lower: | a-z |
:digit: | 0-9 |
字符
RE | 意义 |
---|---|
ˆword | 待查找字符串在首行 |
word$ | 待查找字符串在尾行 |
. | 一定有一个任意字符 |
\ | 转义 |
* | 重复的零到无穷个前一个字符 |
[list] | list 中任意一个 |
[n1-n2] | 要选取的字符范围 |
[ˆlist] | 上上个取反 |
{n,m} | 连续 n 到 m 个前一个字符 |
{n,} | 连续 n 个以上的前一个字符 |
# grep -n 'go\{2,3}g' regular_express.txt
sed 工具
1 | # sed [-nefr] [动作] |
部分数据的查找并替换# sed 's/旧字符串/新字符串/g'
例子🌰
1 | nl /etc/passwd | sed '3,$d' |
sed 可以直接修改文件内容,使用 -i
文件的格式化
printf
1 | # printf '打印格式' 实际内容 |
awk
处理每一行的字段内的数据,默认分隔符是空格键或 [tab] 键
内置变量
名称 | 意义 |
---|---|
NF | 每行的字段总数 |
NR | 目前是第几行 |
FS | 目前的分隔符 |
1 | # awk '条件类型1{动作1} 条件类型2{动作2} ...' filename |
文件比较工具
以行为单位,用于同一文件新旧版本的区别,也可以比较目录,找出 only in 文件
1 | # diff [-bBi] fromfile tofile |
补丁文件,使用 diff 制作出来的比较文件扩展名为 .patch,以行为单位新文件看到 - 会删除,+ 会加入
1 | # patch -R -pN < patch_file |
以字节为单位,用于比较二进制文件
1 | # cmp [-s] file1 file2 |