Linux三剑客
type
status
date
slug
summary
tags
category
icon
password
bash
- 命令展开
- 命令别名
- 命令历史
- 快捷键
RegExp
这是个令人头疼的东西(
- 基本正则 BRE
- 扩展正则 ERE
在Linux中仅受三剑客支持
基本正则表达式BRE集合
- 匹配字符
- 匹配次数
- 位置锚定
符号 | 作用 |
^ | 用于模式的最左侧,如”^oldguy”,匹配以oldguy单词开头的行 |
$ | 用于模式的最右侧,如”oldguy$",匹配以oldguy单词结尾的行 |
| ^$ |
. | 匹配任意一个字符 |
\ | 转义 |
* | 匹配前一个字符0或多次 |
.* | 匹配所有内容 |
^.* | 匹配任意多个字符开头的内容 |
.*$ | 匹配任意多个字符结尾的内容 |
[abc] | 匹配[]内的任意一个字符,也可以写成[a-c] |
[^abc] | 匹配除了^后面的任意字符 |
扩展正则表达式ERE集合
必须用grep -E才能生效
字符 | 作用 |
+ | 匹配前一个字符1次或多次 |
[:/]+ | 匹配括号内的”:“或者”/“字符一次或多次 |
? | 匹配前一个字符0或1次 |
| | 表示或者,同时过滤多个字符串 |
() | 分组过滤 |
a{n,m} | 匹配前一个字符最少[n,m]次 |
a{n,} | 匹配前一个字符[n,∞)次 |
a{n} | 匹配前一个字符正好n次 |
a{,m} | 匹配前一个字符[0,m]次 |
grep
参数选项 | 解释说明 |
-v | 排除匹配结果(取反) |
-n | 显示匹配行与行号 |
-i | 不区分大小写 |
-c | 只统计匹配的行数 |
-E | 扩展正则 |
–color==auto | 为过滤结果添加颜色 |
-w | 只匹配过滤的单词 |
-o | 只输出匹配的内容 |
普通正则案例
扩展正则案例
- +
- ()
- {n,m}&{n,}&{,m}
sed
语法:
选项:
参数选项 | 解释 |
-n | 取消默认sed的输出,常与内置sed内置命令p一起使用 |
-i | 直接将修改结果写入文件,不用-i修改的是内存数据 |
-e | 多次编辑,不需要管道符 |
-r | 支持正则 |
常用内置命令字符:
sed的内置命令字符 | 解释 |
a | append,对文本追加,在指定行后面加一行/多行文本 |
d | Delete,删除匹配行 |
i | insert,表示插入文本,在指定行前面加一行/多行文本 |
p | Print,打印匹配行的内容,通常p和-n一起用 |
s/正则/替换内容/g | 匹配正则内容,然后替换内容(支持正则),g代表全局匹配(可选) |
sed匹配范围:
范围 | 解释 |
空地址 | 全文处理 |
单地址 | 指定文件某一行 |
/pattern/ | 被模式匹配到的每一行 |
范围区间 | 10,20 十到二十行,10,+5
第十行开始向下五行,/pattern1/,/pattern2/ |
步长 | 12,表示第1、3、5、7、9行,22表示2、4、6、8、10行 |
案例:
- 打印某几行
- 模式匹配
- 增加/删除行
- 提取ip信息
假设ifconfig 第二行如下:
awk
这位更是重量级:sob:
语法:
awk '{print $2}'
没有使用参数和模式,$2
表示输出文本的第二列,$0
表示整行awk默认空格为分隔符,多个空格识别为一个空格
awk按行处理文件
$NF
表示当前分割的最后一列,倒数第二列可以写成$(NF-1)
awk内置变量
内置变量 | 解释 |
$n | 指定分隔符后,当前记录的第n个字段 |
$0 | 完整的输入记录 |
FS | 输入字段分隔符,默认是空格 |
NF | 分隔后当前行一共有多少个字段 |
NR | 当前记录数,行数 |
FNR | 个文件分别计数的行号 |
OFS | 输出字段分隔符,默认是空格 |
RS | 输入记录分隔符(输入换行符) |
ORS | 输出记录分隔符(输出换行符) |
FILENAME | 当前文件名 |
ARGC | 命令行参数的个数 |
ARGV | 数组,保存的是命令行给定的各参数 |
更多内置变量可以用man手册查看 | man awk |
自定义输出内容
awk必须外层单引号,内层双引号,内置变量
$1、$2
不得添加双引号awk参数
参数 | 解释 |
-F | 指定分隔字段符 |
-v | 定义或修改一个awk内部的变量 |
-f | 从脚本文件中读取awk命令 |
awk案例
test.txt文件如下
- 指定行
- FS输入分隔符
- OFS输出分隔符
- 处理多个文件显示行号(NR&FNR)
a.txt
b.txt
输出:
输出:
- RS&ORS
- ARGV
- 自定义变量
- awk格式化
printf需要指定format,不会自动换行
符号 | 含义 |
%c | 显示字符的ASCII码 |
%d/%i | 十进制整数; |
%e/%E | 科学计数法显示数值; |
%f | 显示浮点数 |
%g/%G | 以科学计数法的格式或浮点数的格式显示数值 |
%s | 显示字符串 |
%u | 无符号整数 |
%% | 显示%自身 |
- | 左对齐;默认右对齐 例:printf
“%-d” |
+ | 显示数值符号例:printf “%+d” |
对passwd格式化
- awk模式pattern
- BEGIN模式是处理文本之前需要执行的操作
- END模式是处理完所有行之后执行的操作
特殊的pattern: BEGIN和END
pattern也可以理解为条件
awk的模式
关系运算符 | 解释 | 示例 |
< | 小于 | x<y |
<= | 小于等于 | x<=y |
== | 等于 | x==y |
!= | 不等于 | x!=y |
>= | 大于等于 | x>=y |
> | 大于 | x>y |
~ | 匹配正则 | x~/正则/ |
!~ | 不匹配正则 | x!~/正则/ |
- awk与正则表达式
找出
/etc/passwd
中/usr/bin/false
的用户找出两个用户之间的内容
查看nginx访问access.log中访问最频繁的十个ip
小练习(没写捏)
- grep
- sed
- awk
- Waline
Last update:
type
status
date
slug
summary
tags
category
icon
password
使用Notion全新构建!欢迎访问
关注taffy喵~谢谢喵~