《Awk正则表达式与输入文件处理全解析》
1. 正则表达式文本匹配规则
在Awk中,正则表达式的匹配有其特定规则。例如,执行以下命令:
echo aaaabcd | awk '{ sub(/a+/, "<A>"); print }'
此例运用 sub() 函数对输入记录进行修改。 sub() 函数会将第一个参数所匹配的文本首次出现处,替换为第二个参数提供的字符串。这里的正则表达式 /a+/ 表示“一个或多个‘a’字符”,替换文本为 <A> 。由于Awk和POSIX正则表达式总是匹配输入字符中最左侧、最长的可匹配序列,所以输入中的四个‘a’字符都会被替换为 <A> ,输出结果为 <A>bcd 。
在进行简单的匹配或不匹配测试时,这种规则或许不太重要,但在使用 match() 、 sub() 、 gsub() 和 gensub() 函数进行文本匹配和替换时,就至关重要。同时,理解这一原则对于基于正则表达式的记录和字段分割也很关键。
2. 动态正则表达式的使用
在‘~’或‘!~’运算符的右侧,不一定必须是正则表达式常量(即斜杠之间的字符字符串),可以是任何表达式。该表达式会被求值,必要时会转换为字符串,然后
超级会员免费看
订阅专栏 解锁全文
3

被折叠的 条评论
为什么被折叠?



