我是新来的AWK,我觉得很棒,但我是个傻瓜。
我在做这个:
awk '{print $1, $2 = /Pattern\w+/}' file
对于此类数据:
3145 wfgd4 2345 sdf 55667 PatternAHF34
3148 fh345 34f PatternRT4555 NNN NNN
3158 57ggt 3458f 58886 PatternYT334 56YY
3165 rf3d4 2t45 sdf 55667 Potato
3188 fhrf5 34b PatternRT8855 N3 NN55
3218 g7ggt 34ggf 5116 PatternYYY34 56YT
如您所见,列不对齐。
我想要的:
3145 PatternAHF34
3148 PatternRT4555
3158 PatternYT334
3165
3188 PatternRT8855
3218 PatternYYY34
我得到的是:
3145 1
3148 1
3158 1
3165 0
3188 1
3218 1
提前谢谢大家
最佳答案
你可以说:
awk '{match($0, /Pattern\w+/)} { print $1, substr($0, RSTART, RLENGTH) }' file
对于您的输入,它将产生:
3145 PatternAHF34
3148 PatternRT4555
3158 PatternYT334
3165
3188 PatternRT8855
3218 PatternYYY34
(您的示例生成
0
和1
,因为您将$2
指定给模式匹配的结果。)您可能还需要参考Built-in variables。