在awk中使用通配符
使用awk,我想打印第一列中以22_开头的字符串的所有行 我尝试了以下方法,但显然*在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 '$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检查精确匹配