awk命令
-
-
之所以叫AWK是因为取其三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符
-
awk的应用场景:通常对数据进行列的提取
-
语法:
-
awk '条件 {执行动作}' 文件名
-
awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
-
awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
-
-
常用变量和命令:
-
$0 #代表一整行 $1 #代表第一列 $2 #代表第二列
-
NR:行号
-
FS:分隔符
-
BEGIN:在读取所有行内容前就开始执行,常常被用于修改内置变量的值
-
END:结束的时候执行
-
/xxx/:xxx表示正则表达式的规则
-
printf #格式化输出,不会自动换行
-
%ns:字符串型,n代表有多少个字符
-
%ni:整型,n代表输出几个数字
-
%.nf:浮点型,n代表的是小数点后有多少个小数
-
-
print #打印出内容,默认会自动换行
-
\t #制表符
-
\n #换行符
-
1 printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6 2 3 #打印第一列和第三列 4 cat /etc/passwd | awk -F ":" '{print $1 $2}'
-
-
grep 更适合单纯的查找或匹配文本
-
awk 更适合格式化文本,对文本进行较复杂格式处理
-
sed 更适合编辑匹配到的文本
-
-
if、while以及for的使用和C语言类似,需要注意的是语句要整体包含在大括号类
1 cat /etc/passwd | awk -F ":" '{if (NR == 20) {print $1} else if(NR == 21) {print $2} else {print $3}}' 2 3 #手动格式化后,如下: 4 { #最外面的大括号不能少 5 if (NR == 20) 6 { 7 print $1 8 } 9 else if(NR == 21) 10 { 11 print $2 12 } 13 else 14 { 15 print $3 16 } 17 }