GAWK-使用技巧
介绍
gawk
是 Unix 中原始的 awk
程序的 GNU 版本. 其提供了一种编程语言而不只是编辑器命令. 如:
- 定义变量
- 算术和字符串操作符
- 结构化语句
- 格式化输出
基本使用
语法格式:
1 |
|
常用选项:
-F fs
,--field-separator
, 指定行字段分隔符, 默认是空白字符-f file
, 从文件读取命令-v var=value
, 定义变量-W keyword
, 指定警告等级
命令需放在花括号和单引号中, 如:
1 |
|
运行后会要求从 STDIN 获取输入.
而匹配位于 program 之前:
1 |
|
将文本打印到 STDOUT
用 print
命令:
1 |
|
数据字段变量
gawk
会将文本行中的一些数据分配给如下变量:
$0
, 整个文本行$1
, 文本行中的第一个数据字段$2
, 文本行中的第二个数据字段$n
, 文本行中的第 n 个数据字段
如文本为:
1 |
|
打印每行第一个字段:
1 |
|
修改某一个字段:
1 |
|
在处理数据前运行一段脚本
1 |
|
在处理数据后运行一段脚本
1 |
|
在 BEGIN 中设置变量
1 |
|
gawk 支持的正则表达式
字符匹配:
.:匹配任意单个字符。
[abc]:匹配字符集中的任意一个字符(a、b 或 c)。
[^abc]:匹配除字符集中的任意一个字符(a、b 或 c)之外的任意字符。
[a-z]:匹配字符范围内的任意一个小写字母。
[A-Z]:匹配字符范围内的任意一个大写字母。
[0-9]:匹配字符范围内的任意一个数字。
[:alnum:]:匹配任意字母或数字字符。
[:alpha:]:匹配任意字母字符。
[:blank:]:匹配空格或制表符。
[:digit:]:匹配任意数字字符。
[:lower:]:匹配任意小写字母字符。
[:upper:]:匹配任意大写字母字符。
[:space:]:匹配任意空白字符(空格、制表符、换行符等)。
[:punct:]:匹配任意标点符号字符。
[:xdigit:]:匹配任意十六进制数字字符。
重复匹配:
*:匹配前一个元素零次或多次。
+:匹配前一个元素一次或多次。
?:匹配前一个元素零次或一次。
{n}:匹配前一个元素恰好 n 次。
{n,}:匹配前一个元素至少 n 次。
{n,m}:匹配前一个元素至少 n 次但不超过 m 次。
锚点和边界:
^:匹配行的开头位置。
$:匹配行的结尾位置。
\b:匹配单词边界。
\B:匹配非单词边界。
分组和引用:
():将多个元素组合成一个子表达式。
\n:引用第 n 个子表达式(n 是一个数字)。
转义字符:
\:转义特殊字符
GAWK-使用技巧
http://example.com/2024/03/08/GAWK-使用技巧/