0

カナダの郵便番号 ( format ) を含む可能性のある一連のデータを実行しようとしておりA0A 0A0、その行を印刷したいと考えています。真ん中にスペースがある場合とない場合があります。次の正規表現を試しました:

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}}

しかし、それは同じ結果をもたらしました。誰かが私が間違っていることを見つけることができますか?

4

3 に答える 3

2

Plus は、1 回以上繰り返されるものを指定しますが、これはおそらくあなたが望むものではありません。前の項目をオプションにする疑問符が必要です。

awk '{if($5~/[a-zA-Z][0-9][a-zA-Z] ?[0-9][a-zA-Z][0-9]/){print $5}}
于 2012-07-17T21:10:40.090 に答える
1

使う?

awk '$5~/[a-zA-Z][0-9][a-zA-Z] ?[0-9][a-zA-Z][0-9]/ {print $5}'
于 2012-07-17T21:11:30.413 に答える
0

2つのフィールド(デフォルトではスペース)でA0A 0A0分割されているようですので、 (フィールドセパレータ)変数を変更するか、最初の部分と2番目の部分と比較する必要があります。awkFS$5$6

于 2012-07-17T21:10:42.840 に答える