文本编辑器awk
一、 awk工作原理
1.命令格式
awk 选项 ‘模式或条件 { 操作 }’ 文件1 文件2 ......
awk -f 脚本文件 文件1 文件2 ......
2.awk常见的内建变量(可直接用)如下所示
FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表符。与“-F”作用相同
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个文件名
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,而进行处理。预设值是’\n‘
## 3.按行输出文本,一些示例:
```cpp
awk '(print)' 文件名 #输出所有内容
awk '(print $0)' 文件名 #输出所有内容
awk 'NR==1,NR==3{print}' 文件名 #输出第1~3行内容
awk '(NR>=1)&&(NR<=3){print}' 文件名 #输出第1~3行内容
awk 'NR==1||NR==3{print}' 文件名 #输出第1行、第3行内容
awk '(NR%2)==1{print}' 文件名 #输出所有奇数行的内容
awk '(NR%2)==0{print}' 文件名 #输出所有偶数行的内容
awk '/^root/{print}' /etc/passwd #输出以root开头的行
awk '/nologin$/(print)' /etc/passwd #输出以nologin结尾的行
awk 'BEGIN{x=0};/\bin\/bash$/{x++};END{print x}' /etc/passwd #统计以/bin/bash结尾的行数,等同于 grep -c "/bin/bash$"
二、awk的基础用法
1.输出文件中的某一列
2.根据特定条件筛选数据