目录
一、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