awk正規表現マッチパターンとスペース

awk正規表現マッチパターンとスペース

ファイルがありますfruits

ap ple 
ora nge 
pe ar
gra pes
bro ccoli
tom ato
ap ache

ファイルにいくつかの果物があるかどうかを確認するためにawkスクリプトを作成したいと思います。

頑張りました

awk -F: '/ap|ora|pe|gra ple|nge|ar|pes/ {sum+=1} END {print sum+0}' fruits

4つのペアが正確に一致するため、4を返す必要がありますが、ap acheこの場合、スペースが登録されていないため5を返すようです。

ベストアンサー1

正規ap|ora|pe|gra ple|nge|ar|pes表現の一致

apまたはorape または gra ple または ngeまたはarpes

間にスペースがある2つの別々の選択肢を一致させるには、いくつかのグループ化を追加する必要があります。

$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/' fruits 
ap ple 
ora nge 
pe ar
gra pes

$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/ {sum+=1} END{print sum}' fruits 
4

デフォルト値はレコード全体と一致するため、-F空白以外の値に設定する必要はありません。/pattern/

おすすめ記事