GNU/Linux >> Linux の 問題 >  >> Linux

awkを使用して一致が見つかったかどうかを表示する

よろしければフォローしてみてください。 awk が単語境界をサポートしている場合。

awk '
/\<apple\>/{
  app_found=1
}
/\<mango\>/{
  mango_found=1
}
/\<grapes\>/{
  grapes_found=1
}
END{
  if(app_found && mango_found && grapes_found){
    print "All 3 words found."
  }
  else{
    print "All 3 words are NOT present in whole Input_file."
  }
}
' Input_file

編集された回答: 次のコマンドは、上記の入力サンプルでテストされており、期待どおりに機能します:

awk '
  BEGIN { RS = "§" }
  {print (/apple/ && /mango/&&/grapes/) ? "match found" : "match not found"}
' demo.txt

文字 § を使用しました 入力にそのような文字がなく、 RS = "\0" であるため、レコードセパレータとして ポータブルではありません。そのような § が発生する可能性があると思われる場合 入力ファイルで発生する可能性がある場合は、以下の移植可能なソリューションを使用できます:

awk '
  { i = i $0 } 
  END { print (i ~ /apple/ && i ~ /mango/ && i ~ /grapes/) ? "match found" : "match not found"}
' demo.txt

Linux
  1. サブスクリプション マネージャー:コマンドが見つかりません

  2. dnf:コマンドが見つかりません

  3. id:コマンドが見つかりません

  1. 最後:コマンドが見つかりません

  2. w:コマンドが見つかりません

  3. df:コマンドが見つかりません

  1. du:コマンドが見つかりません

  2. rm:コマンドが見つかりません

  3. mv:コマンドが見つかりません