awk学习笔记(一)

  1. 什么是awk?
awk是一个优良的文本处理工具,与其他语言不同之处在于它是数据驱动,大多数其他语言是进程驱动

2. awk的种类

awk 有3个版本:awk、nawk和gawk,其中gwak是awk的GNU版本,可以输入一下指令查看awk的版本及版本号:

awk --version


3. 运行awk
awk 命令格式:
awk [参数] ‘模式匹配 {处理}’ 文件列表 其中[] 代表可选

• 程序比较短的时候,我们可以用以下命令
awk ‘program’  input-file1 input-file2


•程序较长时,我们可以将代码保存成文件的形式,并使用以下命令
awk -f  program-file input-file1 input-file2


BEGIN{} 模式处理前的动作
END{} 模式处理后的动作
printf 格式化打印
print 打印各个域

4. 选项参数
• -F fs 或者 field-separator fs
指定输入文件拆分分隔符, fs是一个字符串或者是正则表达式
• -f source-file
从源文件读取awk命令
• -v var=val 或者 -- assign var=val
给用户自定义的一个变量赋值
• -b 或者 --characters-as-bytes
把所有的输入数据当做单字节字符处理,另外print和printf输出也被当做单字节字符处理
• -d[file] 或者 --dump-variables[=file]
将全局变量的排序列表,他们的类型和最后的值写入file中,如果没有提供文件,则在写入当前目录的awkvars.out
• -D[file] 或者 --debug[=file]
调试awk程序
• -i source-file 或者 --include source-file
从source-file读取一个awk库
• -l ext 或者 --load ext
导入一个叫ext的动态扩展库

5. awk的内置变量
-ARGC 命令行变参个数
-ARGV 命令行各个参数数组
-FILENAME 当前处理文件名
-NR 到当前位置记录数
-FNR 当前文件中的记录号
-NF 当前记录中域个数
-FS 输入域分隔符,默认为空格
-OFS 输出与分隔符
-RS 输入记录分隔符, 默认是 \n
-ORS 输出记录分隔符
其它: $0 表示整条记录; $1, $2, ... 表示记录的各个域

6. 一些简单的例子
文件mail_list.txt

  Amelia      555-5553        amelia.zodiacusque@gmail.com        F
  Anthnoy     555-3412        anthony.asserturro@hotmail.com      A
  Becky       555-7685        becky.algebrarum@gmail.com          A
  Bill        555-1675        bill.drowning@hotmail.com           A  


• 将所有的内容打印出来
awk ‘{print$0}’ mail_list.txt


输出

file://C:\Users\DELL\AppData\Local\Temp\ct_tmp/1.png

file://C:\Users\DELL\AppData\Local\Temp\ct_tmp/1.png

• 将第一列和第三列输出
awk ‘{print$1,$3}’ mail_list.txt


输出


file://C:\Users\DELL\AppData\Local\Temp\ct_tmp/2.png

注:中间加逗号会默认字段间以空格或者tab分隔,否者不分隔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值