たとえば、次のように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: 基礎数学
- 例 2: 高度な数学
- 例3:良い例を作成するには?
したがって、「example」と「math」を入力するとfalseが返されます。ただし、「例1」と「基本数学」を入力すると、出力がエコーされます。周りに尋ねたら、ほとんどの友達がawkを使用することをお勧めしますが、そうする場合は、ほとんどの検索機能でgrepを使用するため、スクリプト全体を再実行する必要があります。
その当時、先生はgrepだけを教えてくれて、awkは知らず、基本的なgrepだけを学びました。
ベストアンサー1
ここに例を示すshellhacks.comの素晴らしい小さなページがあります」BASH "Grep OR/Grep AND/Grep NOT" 演算子の使用」、そしてそれはsed
&awk
等価物を持っています。ここに貼り付けるので、$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 マニュアル。含む良い情報がたくさんあります。一般的な表現少し残った使用例。
このページは正規表現の「チートシート」。