使用awk,我想打印第一列中以22_开头的所有字符串
我尝试了以下内容,但很明显*在awk中不能用作通配符:
awk '$1=="22_*" {print $0}' input > output
这是否可以在awk中使用?
答案 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检查完全匹配。