BASH "Grep OR/Grep AND/Grep NOT" 演算子の使用

BASH

たとえば、次のようにgrepを使用して部分検索を実行できることがわかります。

echo "Enter example"
read example

echo "Enter Subject"
read subject
grep -i ^$example info.txt | grep -i ^[^,]*:$subject 

出力は文字列を含むすべての行になります。 「example」と入力すると、「example」という文字列を含むすべての行が表示されます。

ユーザーがinfo.txtの利用可能な読み取りデータのリストから一般的な検索を実行できるようにするには、この機能が必要です。

私は現在ifステートメントを使用しています。 $exampleと$subjectの両方に情報がある場合は、リテラル文字列一致文字列などの特定の検索を実行し、そうでない場合はfalseを返します。

info.txtに多くの例があるように、検索をより柔軟にしたり、検索を具体的にする方法はありますか?

  1. 例 1: 基礎数学
  2. 例 2: 高度な数学
  3. 例3:良い例を作成するには?

したがって、「example」と「math」を入力するとfalseが返されます。ただし、「例1」と「基本数学」を入力すると、出力がエコーされます。周りに尋ねたら、ほとんどの友達がawkを使用することをお勧めしますが、そうする場合は、ほとんどの検索機能でgrepを使用するため、スクリプト全体を再実行する必要があります。

その当時、先生はgrepだけを教えてくれて、awkは知らず、基本的なgrepだけを学びました。

ベストアンサー1

ここに例を示すshellhacks.comの素晴らしい小さなページがあります」BASH "Grep OR/Grep AND/Grep NOT" 演算子の使用」、そしてそれはsedawk等価物を持っています。ここに貼り付けるので、$subject任意の順序で検索することができます。$example

BASH "Grep OR/Grep AND/Grep NOT" 演算子の使用

次の資料では、Linux GREP/SED/AWK コマンドで OR/AND/NOT 演算子を使用する方法を示す例をいくつか紹介します。

このようなものを使用することは非常に一般的な作業です。Linuxコマンドラインツールgrep、sed、awk正規表現を使用したファイルの解析

私は方法を見せるすべての行を検索、それさまざまなモードが含まれています。、ファイルのすべての行を印刷する方法、つまり複数のパターンマッチングすべての行を見つけて印刷する方法一致するパターンがありません

Grep 'OR'演算子

次のいずれかのパターンに一致するファイルのすべての行を見つけます。

GREP コマンドを使用します。

grep "pattern1\|pattern2" file.txt
grep -E "pattern1|pattern2" file.txt
grep -e pattern1 -e pattern2 file.txt
egrep "pattern1|pattern2" file.txt

AWK コマンドを使用します。

awk '/pattern1|pattern2/' file.txt

SED コマンドを使用します。

sed -e '/pattern1/b' -e '/pattern2/b' -e d file.txt

Grep 'AND'演算子

複数のパターンに一致するファイルのすべての行を見つけて印刷します。

GREP コマンドを使用します。

grep -E 'pattern1.*pattern2' file.txt # in that order
grep -E 'pattern1.*pattern2|pattern2.*pattern1' file.txt # in any order
grep 'pattern1' file.txt | grep 'pattern2' # in any order

AWK コマンドを使用します。

awk '/pattern1.*pattern2/' file.txt # in that order
awk '/pattern1/ && /pattern2/' file.txt # in any order

SED コマンドを使用します。

sed '/pattern1.*pattern2/!d' file.txt # in that order
sed '/pattern1/!d; /pattern2/!d' file.txt # in any order

Grep 'NOT'演算子

パターンと一致しないすべての行を見つけて印刷します。

GREP コマンドを使用します。

grep -v 'pattern1' file.txt

AWK コマンドを使用します。

awk '!/pattern1/' file.txt

SED コマンドを使用します。

sed -n '/pattern1/!p' file.txt

これはリンクですGNU Grep マニュアル。含む良い情報がたくさんあります。一般的な表現少し残った使用例

このページは正規表現の「チートシート」

おすすめ記事