我试图通过一堆数据可能包含加拿大邮政编码(格式A0A 0A0
)并希望打印行。中间可能有或没有空间。我试过以下正则表达式:匹配0或1个空格的字符串
awk '{if($5~/[a-zA-Z][0-9][a-zA-Z] +[0-9][a-zA-Z][0-9]/){print $5}}
而且,这将返回确实有空格的行。我认为'+'会使它返回两条线。我也试过:
awk '{if($5~/[a-zA-Z][0-9][a-zA-Z][ ]+[0-9][a-zA-Z][0-9]/){print $5}}
但是,这给出了相同的结果。有人可以发现我做错了什么吗?
会'\ s?'工作? – TheZ 2012-07-17 21:05:49
它似乎并不如此。我不确定awk将\ s视为空白。它似乎更喜欢[:space:],但是[:space:] +也不起作用。 – Ilion 2012-07-17 21:08:26
哦,对不起,我错过了? \ s?只返回没有空间的线。 – Ilion 2012-07-17 21:10:29