awk学習ノート(8)-簡単な正則マッチング


ファイル内の該当する列の照合
やはり前のarr.datで例を挙げます.
私たちはすべての時間が7時の記録を見つけなければなりません.私たちはこのように書くことができます.

  
  
  
  
  1. awk '/7/' arr.dat 
上記のプログラムは、1行に数字7が含まれているレコードに一致し、行全体が出力されます(actionを省略するとデフォルトでは行全体が出力されます).
IDに7が含まれていれば、8時でも上のプログラムがマッチします.カップですね.改善してください.

  
  
  
  
  1. awk '$2 ~ /7/' arr.dat 
説明:$2は2列目、'~'はマッチング(match)、'/7/'は数字7を含み、2列目に数字7を含む列をマッチングします.
残念なことに、上のプログラムにもバグがあります.2列目の分や秒に数字7が現れると、マッチしますから、どうすればいいですか.さらに改善します.

  
  
  
  
  1. awk '$2 ~ /7:/' arr.dat 
コロンを1つ追加すると、より信頼性が高くなります.コロンの前に数字7があるだけです.
出力結果:

  
  
  
  
  1. 1034 7:26  
  2. 1025 7:27 
  3. 1101 7:32  
  4. 1006 7:45 
  5. 1012 7:46  
  6. 1028 7:49  
  7. 1051 7:51 
  8. 1029 7:57  
  9. 1042 7:59 
他に書き方はありますか?答えは、次のとおりです.

  
  
  
  
  1. awk '$2 ~ /^7/' arr.dat 
説明すると,'/^7/'は7で始まるので,文全体が2列目の7で始まるレコードに一致し,出力の結果は上記と同じである.