
目录
一、awk基础
二、awk工作原理
三、OFS输出分隔符
四、awk的格式化输出
五、awk模式pattern
一、awk基础


使用案例:
1.准备工作
请在Linux中执行以下指令
cat -n /etc/passwd > ./passwd 
练习:
1.从文件 passwd 中提取并打印出第五行的内容
awk NR==5 passwd 
awk “NR==5” passwd
awk ‘NR==5’ passwd 
 
似乎条件可以用单引号和双引号包括起来,也可以不用引号
2.从文件 passwd 中提取并打印出第五行和第六行的内容
awk ‘NR==5,NR==6’ passwd 
  
注意:条件中间要用逗号
3.输出passwd文件下所有的行号
awk '{print NR}' passwd  
 
注意:
- print是awk最常用动作之一。
 - 花括号外面必须加单引号或者双引号。
 
4.使用 awk 打印出文件 passwd 的每一行内容。
awk '{print $0,NR}' passwd 

5.读取 "passwd" 文件的每一行,按照冒号分隔,然后打印出每行的第一个字段(用户名)和最后一个字段。
awk -F “:” ‘{print $1,$NF}’ passwd  
 
这里-F代表分割线,加上":"就是以“:”作为分割,比如root:123456,经过分割后形成两列,root与123456.
二、awk工作原理
一次读取一行文本
按输入分隔符进行切片
将每片直接保存在内建的变量中,$1,$2,$3….


三、OFS输出分隔符

当没有使用分隔符的时候
![]()

当加上分隔符时候,比如逗号
![]()

可以看到两列之间空了一段出来,那么换上更容易看到的分隔符呢?
![]()

指定默认分隔符(通过设置参数OFS实现输出分隔符)
![]()

上述三个等号改为 \t 会如何?

四、awk的格式化输出
请你比较下面不同
        vs        ![]()
---使用print
---使用printf
对比后可以看到区别:

以下练习awk的格式化输出
1.打印整行内容作为一个字符串输出。
![]()

2.打印整行内容作为一个字符串输出。但是加上换行
![]()

3.打印一段字符串并设置分隔符
![]()

五、awk模式pattern

最前面关键字awk,最后面是文件,中间是 参数 引号,引号中是 条件+动作

案例1:使用pattern中的BEGIN使得只输出china而忽略后面的文件


案例2:使用BEGIN 与一般文本下的执行顺序


BEGIN后面的花括号内容优先处理,BEGIN后的动作完成后再处理后面的
案例3:使用BEGIN 一般文本 END下的执行顺序

总结一下
先BEGIN,中文本,后END





















