在awk中使用通配符

时间:2017-11-22 04:47:37

标签: awk wildcard

使用awk,我想打印第一列中以22_开头的所有字符串

我尝试了以下内容,但很明显*在awk中不能用作通配符:

awk '$1=="22_*" {print $0}' input > output

这是否可以在awk中使用?

1 个答案:

答案 0 :(得分:3)

让我们从测试文件开始:

$ cat >file
22_something keep
23_other omit

仅保留以22_开头的行:

$ awk '/^22_/' file
22_something keep

或者,如果您希望明确引用第一个字段,我们可以使用:

$ awk '$1 ~ /^22_/' file
22_something keep

请注意,我们不必在条件之后写{print $0},因为这正是awk与条件关联的默认操作。

在正则表达式的开头,^匹配行的开头。因此,如果您希望在行的开头或字段的开头出现22_,则需要编写^22_

在条件$1 ~ /^22_/中,请注意操作符为~。该运算符告诉awk检查前面的字符串,〜, matches the regular expression ^ 22 _ . If we were to use + in place of〜`,我们会要求awk检查完全匹配。