linux 三剑客 awk
前言
主要是作为练习的记录,这里使用的是C语言中文网中的内容(详情在参考1)
和sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。
awk [选项] '脚本命令' 文件名
选项
选项内容如下
匹配规则
'匹配规则{执行命令}'
由于我这边不会使用正则表达式,所以部分内容看不懂
awk '/^$/ {print "Blank line"}' test.txt
awk 使用数据字段变量
awk 操作文件过程中,每行根据分隔符(默认是空格或者制表符),将每行文件内容进行数据元素划分;
$0: 表示当前整行的内容
$1: 变量表示当前第一个数据元素的内容
$2: 变量表示当前第二个数据元素的内容
…
$n 代表文本行中的第 n 个数据字段
awk 脚本命令使用多个命令
两种方式:
方式1
在{}命令结束后,添加’;’ 即可进行下一条命令
方式2
'{ 后回车,
awk从文件中读取程序(执行命令由手工变成从awk.sh脚本文件中读取)
由于/etc/passwd文件的特殊性,需要重新制定分隔符 -F:
使用了awk脚本文件所以用-f
awk BEGIN关键字
这个BEGIN关键字,可以使得awk增加一个脚本命令字段
这个字段在awk处理文件流式数据之前运行
awk END关键字
这个END关键字,可以使得awk增加一个脚本命令字段
这个字段在awk处理文件流式数据完成之后运行