在awk中使用通配符

在awk中使用通配符,awk,wildcard,Awk,Wildcard,使用awk,我想打印第一列中以22_开头的字符串的所有行 我尝试了以下方法,但显然*在awk中不能用作通配符: awk '$1=="22_*" {print $0}' input > output 这在awk中可能吗?让我们从一个测试文件开始: $ cat >file 22_something keep 23_other omit 要仅保留以22\u开头的行,请执行以下操作: $ awk '/^22_/' file 22_something keep 或者,如果您希望显式引用第

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

我尝试了以下方法,但显然*在awk中不能用作通配符:

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

这在awk中可能吗?

让我们从一个测试文件开始:

$ cat >file
22_something keep
23_other omit
要仅保留以
22\u
开头的行,请执行以下操作:

$ awk '/^22_/' file
22_something keep
或者,如果您希望显式引用第一个字段,我们可以使用:

$ awk '$1 ~ /^22_/' file
22_something keep
请注意,我们不必在条件之后写入
{print$0}
,因为这正是awk与条件关联的默认操作

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

在条件
$1~/^22./
中,请注意运算符是
~
。该运算符告诉awk检查前面的字符串~41
是否与正则表达式匹配。如果我们用
+
代替
~`,我们将要求awk检查精确匹配