AWK学习笔记
来源:互联网 发布:手机淘宝网触屏版官网 编辑:程序博客网 时间:2024/04/30 18:20
AWK学习笔记
目录
- AWK学习笔记
- 简介
- 基本使用方法
- 格式
- 调用方式
- 命令部分的构成
- 示例
- 使用技巧待补充
- 正则表达式待补充
- 字符集待补充
- awk内置变量待补充
- awk内置函数待补充
- awk转意字符待补充
- 参考资料
简介
awk
是Unix环境下用于格式化文本,并按一定条件进行筛选显示的工具。awk
以发展这种语言的人Aho.Weninberger和Kernigham命名。
基本使用方法
格式
- 基本格式和说明:
awk [-F filed -separator] 'commands' input-files
;-F
为可先项,后跟间隔符,默认以空格为间隔符;commands
为awk命令,包含模式和动作,如BEGIN
和END
模式,动作需要包含在{}
中,最常用的有{print $0}
;input-files
为输入的文本所在的文件。
调用方式
- 有三种方式可以调用
awk
:- 在命令行中直接执行
awk
命令 - 将
awk
命令写入文件,在shell环境下执行该文件 - 将
awk
命令的commands
部分写成awk脚本
文件,通过-f
选项调用awk脚本
,如下所示:awk -f awk-script-file input-files
- 在命令行中直接执行
命令部分的构成
'[模式] {动作}'
BEGIN
模式:为模式部分使用的关键字,用于表示在读取输入文本之前所做的动作。END
模式:用来在awk
完成文本浏览动作后打印输出文本总数和结尾状态标志。awk
中将文本用域进行标识,域标记为$1,$2...$n
,$0
则表示所有域print
动作:在commands
awk命令中使用,且因为是动作,所以需要包含在'{}'
中,print
之后跟的是需要输出的内容,可以按照一定的格式对域标记进行组合,如:awk {print $1"\t"$3}' input-files
- 输出重定向:
- 重定向符号’>’,可将执行的输出重写到文件中,++但不会输出在屏幕++,且文件会被重写,可使用’>>’,则会从文件尾开始输入。
- 还可使用
tee
命令,也是将输出重写到文件中,但有个好处是++可以输出到屏幕++,如果用-a
参数则可以从文件尾开始输入。
示例
awk 'BEGIN {print "field1\t|field2\n--------------------"} >{print $1"\t|"$2}END{print "succ end"}' input-files
input-files
文件中的内容:a1 a2 a3b1 b2 b3
结果:
field1 |field2--------------------a1 |a2b1 |b2succ end
使用技巧(待补充)
定义多个分隔符,比如想要以‘()’作为分隔对文本‘name(lisa)’可以写为:
awk -F'[()]' '{print $2}' input-files
结果为:lisa
正则表达式(待补充)
- 条件操作符
{if($1 < $2) print $0}
> 大于 {if($1 > $2) print $0}
<= 小于等于 {if($1 <= $2) print $0}
>= 大于等于 {if($1 >= $2) print $0}
== 等于 {if($1 == $2) print $0}
!= 不等于 {if($1 != $2) print $0}
~ 匹配 {if($1~ /aa/) print $1}
!~ 不匹配 {if($1!~ /aa/) print $1}
2. 复合操作符
{if($1~/bb/ && $2~/aa/) print $0}
|| 或 ``{if($1~/bb/ || $2~/aa/) print $0}
! 非 字符集(待补充)
- 字符集:
\ / ^ $ . [] & | () * + - ? % !
?
+ 匹配一个或多个字符 ? 出现频率 awk
内置变量(待补充)
awk
内置函数(待补充)
awk
转意字符(待补充)
- 可以通过使用
‘\’
来对特殊字符进行转意,如果字符串中需要显示{
,则可以使用'\{'
。
参考资料
[1]: 《SHELL编程入门》:第9章 AWK介绍;
[2]: 《UNIX? Shells by Example Fourth Edition》:Chapter 6;
[3]: 【UNIX/LINUX 系统操作手册】:[man awk];
0 0
- [转]Awk学习笔记
- Awk学习笔记(转)
- awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- awk学习笔记
- Awk学习笔记
- awk学习笔记
- [转]Awk学习笔记
- AWK学习笔记
- Awk学习笔记
- Awk学习笔记
- AWK学习笔记
- Awk学习笔记
- [linux]Awk学习笔记
- 【转载】AWK学习笔记
- OC 中常用的占位符
- HTML--Note6--form
- HDOJ 1089 A+B for Input-Output Practice (I)(水题)
- 什么是Spark?
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
- AWK学习笔记
- HDU 1228 A + B
- 看看C# 6.0中那些语法糖都干了些什么(中篇)
- c++静态成员
- POJ_1915_KnightMoves
- 看看C# 6.0中那些语法糖都干了些什么(上篇)
- bzoj3992: [SDOI2015]序列统计
- android 目前遇到的程序崩溃常见原因
- 《TCP/IP入门经典》——网际层