awk作为强大的文本处理工具,对于我们日常的工作来说必不可少。
awk的基本语法:
awk [选项参数] ‘script‘ var=value file 或者
awk [选项参数] -f scriptfile var=value file
man awk
基本参数说明:
-F:指定文件分隔域,
-v var=value or --asign var=value:赋值一个用户定义的变量
-mf nnn and -mr nnn:目前没用到过。可自行google
-W compact,-W traditional:在兼容模式下运行awk,其实awk和gawk都差不多完全一样。
-W copyleft,-W copyright:打印简短的版权信息。
-W help,-W usage:打印awk的帮助信息。
-W lint or --lint:打印不能向传统unix平台移植的结构警告。
-W posix:打开兼容模式,但有限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;flush无效。
-W re-interval:允许间隔正则表达式的使用。
-W source program-text:使用program-text作为源码,可以与-f命令混合使用。
-W version:打印bug版本信息。
用法:我这儿有一个文本文件test.txt,内容如下
awk默认以空格或者tab作为分隔符。
试着以,为分隔符。
上述命令等效于:awk ‘BEGIN {FS=","} {print $1,$4}‘ test.txt【这是内置变量的用法】
使用多个分隔符,先空格分割,然后对分割结果使用","分割。
awk设置变量【可以指定多个变量】
awk的顺序号NR,匹配文本行号。
awk指定输出分隔符号。
正则使用
匹配$1包含“th”,并打印$2,$4,"~"符号是代表匹配正则,代表模式开始,//中是要匹配的模式
输出包含"is"的行
如何忽略大小写
取反操作,有点想grep的表达方式。
忽略大小写,匹配第一列不是/th/的行。
另一种写法
awk脚本
awk脚本的两个关键词:BEGIN and END[注意是大写]
BEGIN{表示执行前的语句}
END{表示执行后的语句}
其中可以加流程控制语句[if while for break continue break等等]
待续