@llplmlyd
2019-09-30T16:32:36.000000Z
字数 1017
阅读 923
Linux
awk [-F 分隔符separator] '[/pattern/]{command}' filename
Attention:命令行中除了变量之外的常量需要加双引号引用
awk [options] 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' file ...
默认是空格
使用每一个参数 需要在参数前加 -v
awk -v FS='xxx' -v OFS='----' '/pattern/{command}' filename
'[/pattern/]{command}'
NR 文件当前行的行号 number of rank
NF 文件当前行的列数(有几列)number of field
输出每次处理的行号,以及当前行以“:”分隔的字段个数
OFS output field separator输出文件的行号分隔符
FS 输入字符分隔符
RS record Separator 输入记录分隔符 指定换行符原换行符仍有效
ORS 输出文本的记录分隔符
FNR 行号 后可跟多个文件,第二个文件行号继续的哥文佳安最后行号开始
ARGC 命令行参数个数
ARGV 数组
# 连续打印,使用空格连接两个变量 如
aaa bbb:
{print $1 $2}
aaabbb
# 分隔打印,使用逗号连接两个变量
aaa bbb:
{print $1 $2}
aaa bbb
# 格式符
%c 显示字符的ASCII码
%d, %i 显示十进制整数
%e, %E 显示科学计数法数值
%f 显示为浮点数,小数
%g, %G 以科学计数法或浮点形式显示数值
%s 显示字符串
%u 无符号整数
%% 显示% 自身
# 修饰符 放在 % 与字母之间
- 左对齐 默认为右对齐
+ 显示数值的正负号
# 操作符
- 算数操作符 +-*/ 用在命令{}括号内
printf "FORMAT", item1,item2, ...
# printf 打印表格
# %20s 输出20个字符,如果变量字符数不够则用空格补齐
# %- 左对齐
awk -F: 'printf "%-20s|%-15s\n" $1,$2' /etc/passwd
awk [options] 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' file ...
$0 整一行
$1
'NR==number{command}'
/pattern/
/pattern/, /pattern/
NR==number1,NR==number2