ファイルがありますが、xyz.txt、1行に1つの文字列。
検索はどうですか?xyz.txt正確に一致するには?
たとえば、入力文字列を取得します。defabc
、他のアプリケーションから。見つかった
場合はdefabc
返却する必要があります。本物、その他間違った。で正規表現を使用できますかgrep
?
サンプルファイル: xyz.txt:
abc
def
abc_def
def_abc
abcdef
defabc
uvx
答え1
正しい一致を見つけるには、この-F
オプションを使用しますgrep
(正規表現はオフ)。
$ grep -F "defabc" xyz.txt
defabc
grep
true または false をテストできるように、適切な戻りコードを設定します。
$ if grep -qF "defabc" xyz.txt; then echo True; else echo False; fi
True
$ if grep -qF "Defabc" xyz.txt; then echo True; else echo False; fi
False
grep
戻りコードのみを設定したいので、このオプションは静かに(通常の出力を省略)コマンドを発行-q
するために使用されます。grep
一致をフルワードに制限
一致したいがdefabc
一致しない場合は、単語全体に一致を制限するdefabc1
オプションを追加できます。-w
if grep -qFw "defabc" xyz.txt; then echo True; else echo False; fi
man grep
「単語」がどのように定義grep
されているかを説明してください。
-w, --word 正規表現
単語全体を構成する項目を含む行のみを選択してください。テストでは、一致する部分文字列が行の先頭にあるか、単語を作成しない文字が前にある必要があります。繰り返しますが、行の末尾にあるか、単語を形成しない文字が後に続く必要があります。
単語を構成する文字は、文字、数字、下線です。
シェル変数から出力を取得する
使用するコマンドの出力をキャプチャするにはコマンドの置き換えその形態は$(...)
次のとおりです。
$ r=$(if grep -qF "defabc" xyz.txt; then echo True; else echo False; fi)
$ echo $r
True
シェル変数から終了コードを取得する
grep -qF "defabc" xyz.txt
r=$?
r
一致するものがある場合は0、一致するものがない場合は1、別のエラーが発生した場合は2
答え2
Unix の Korn Shell から正確な式を検索するコマンド
grep -w "SEARCH_EXPRESSION" FILE_TO_BE_SEARCHED
上記のコマンドは、正確な単語または検索表現を検索します。