awk学習ノート(8)-簡単な正則マッチング
ファイル内の該当する列の照合
やはり前のarr.datで例を挙げます.
私たちはすべての時間が7時の記録を見つけなければなりません.私たちはこのように書くことができます.
IDに7が含まれていれば、8時でも上のプログラムがマッチします.カップですね.改善してください.
残念なことに、上のプログラムにもバグがあります.2列目の分や秒に数字7が現れると、マッチしますから、どうすればいいですか.さらに改善します.
出力結果:
やはり前のarr.datで例を挙げます.
私たちはすべての時間が7時の記録を見つけなければなりません.私たちはこのように書くことができます.
- awk '/7/' arr.dat
上記のプログラムは、1行に数字7が含まれているレコードに一致し、行全体が出力されます(actionを省略するとデフォルトでは行全体が出力されます).IDに7が含まれていれば、8時でも上のプログラムがマッチします.カップですね.改善してください.
- awk '$2 ~ /7/' arr.dat
説明:$2は2列目、'~'はマッチング(match)、'/7/'は数字7を含み、2列目に数字7を含む列をマッチングします.残念なことに、上のプログラムにもバグがあります.2列目の分や秒に数字7が現れると、マッチしますから、どうすればいいですか.さらに改善します.
- awk '$2 ~ /7:/' arr.dat
コロンを1つ追加すると、より信頼性が高くなります.コロンの前に数字7があるだけです.出力結果:
- 1034 7:26
- 1025 7:27
- 1101 7:32
- 1006 7:45
- 1012 7:46
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
他に書き方はありますか?答えは、次のとおりです.
- awk '$2 ~ /^7/' arr.dat
説明すると,'/^7/'は7で始まるので,文全体が2列目の7で始まるレコードに一致し,出力の結果は上記と同じである.