本文记录 Linux 一些命令的用法和使用场景,用作备忘录。没有什么技术含量。
awk
awk 基本格式为:
|
|
awk 处理数据的单元是行,它会遍历每一行,使用我们指定的条件来过滤,再执行 action 的操作。awk 使用数据库中的名词,一行叫做一个记录 (Record),一行中的一列叫做一个字段 (Field).
默认 awk 使用空格(以及连续的空格)作为字段分隔符。
输出 4~6 行的第一列和最后一列:
|
|
参数选项
参数 | 注释 | Example |
---|---|---|
-F | 修改输入分隔符 | -F ':' 使用冒号作为分隔符 |
-v | 修改变量 | -v FS=':' 等价于 -F ':' |
常用内置变量
变量 | 注释 |
---|---|
$n | 第 n 个字段的内容,$0 表示一整行 |
NF | Number of Fields 当前记录的字段个数 |
NR | Number of Record 当前记录的序 |
FNR | 各个文件分别计数的行号 |
FS | 字段分隔符,默认空格 |
OFS | 输出时的字段分隔符 |
RS | 记录分隔符,默认换行。若超过 1 个字符则视为正则表达式 |
ORS | 输出时的记录分隔符 |
Pattern
内置模式
模式 | 注释 |
---|---|
BEGIN | 开始处理文本前执行,可用于打印表头 |
END | 处理完毕后执行 |
关系运算符
除了常见的几个:<, <=, >, >=, ==, !=
外,还支持 /pattern/
正则匹配,!/pattern/
不匹配正则。
举例(忽略注释行):
|
|
区间匹配
使用逗号 ,
分隔模式可以形成区间,例如 NR==1,NR==4
表示 1~4 行。除此之外,正则也可以用于区间,表示两行之间的所有记录。
Action
基本格式:
|
|
,
逗号用于隔开多个值,输出时 awk 会用OFS
分隔它们。- 双引号里的值原样输出。
举例:
|
|
printf
基本格式:
|
|
- 必须指定 format
- 不会自动输出换行
格式参数
格式符 | 注释 |
---|---|
%c | 字符的 ASCII 码 |
%d, %i | 十进制整数 |
%e, %E | 科学计数法显示 |
%f | 浮点数 |
%g, %G | 科学计数法显示浮点数 |
%s | 字符串 |
%u | 无符号整数 |
%% | 显示一个百分号 ‘%’ |
修饰符
修饰符 | 注释 | Example |
---|---|---|
- | 左对齐(默认右对齐) | %-8s 8字符宽度,左对齐 |
+ | 显示数值的符号 | %+d |
举例:
|
|
Example
传递 shell 变量
|
|
删除 Docker Tag 为 none 的镜像
|
|