【AWK】awk的使用

AWK 看这篇就基本能满足日常了: https://www.cnblogs.com/zhengyan6/p/16290156.html

awd -F'f' '{print $NF}' 1.txt

$NF 分隔符的最后一列。(如果能分割就是最后一个,如果不能分割,那就是整行)
NF 是行数。。
$0 是一整行
$1 是分割数据后的第一个项
NR : 用来记录行号 ( awk 的参数是可以执行多个的。。。比如 : awk -F: '{print NR, NF, $1, $2, $NF}' aa.log)
BEGIN{FS=":"} : 相当于指定以 : 为分隔符,即 awk BEGIN{FS=":"} = awk -F: 同效果,但 BEGIN{FS=":"} 优先级更高
OFS : 指定打印分隔符(默认空格)

比如aaa.log 的内容有: 
aa:1:2:3
bb:11:22:33
cc:44:55:66
cdfsdfd:2423423
afbfd

如果执行 awk -F: '{print $1, $2}' aa.log  它按冒号分隔,并默认按空格做分隔符打印,结果如下:
aa 1
bb 11
cc 44
cdfsdfd 2423423
afbfd

如果指定分隔符
awk -F: 'BEGIN{OFS=" >>> "}{print $1, $2}' aa.log
结果就会变成: 
aa >>> 1
bb >>> 11
cc >>> 44
cdfsdfd >>> 2423423
afbfd >>>


还有 printf 是可以带格式化的: 
awk -F: 'BEGIN{OFS="|"}{printf "|%+15s|%-15s|\n", $1, $2}' aa.log


|             aa|1              |
|             bb|11             |
|             cc|44             |
|        cdfsdfd|2423423        |
|          afbfd|               |


解析:

|		: 以 | 为分隔符

|%+15s|	 : 以 | 为分隔符 %s 配合 printf 使用 代替当前字符串 右对齐 占用15字符

|%-15s|	 : 以 | 为分隔符 %s 配合 printf 使用 代替当前字符串 左对齐 占用15字符

\n		 : 换行符

$NF		 : 存储以 | 为分隔符的最后一列

$1		 : 存储以 | 为分隔符的第一列

posted @ 2024-06-17 15:40  aaacarrot  阅读(5)  评论(0编辑  收藏  举报