たとえば、ファイルに正確な文字列が含まれているかどうかを確認する必要がありますが、たとえばそうstring12345
ではありませんstring123456
。この文字列にはスペースを含めることができます。ファイルは、すべてチェックする必要があるさまざまな行で構成されています。
ただし、文字列は、区切り文字の間など、行の別の場所にある場合があります。区切り文字は または のいずれ|
か,
です。最後に、文字列は行の先頭または末尾に配置することもできます。
これまでに作業した行ごとのチェックは次のとおりです。
sLineFromFile=$(cat "${fFileToCheck}" | grep ^${sStringToCheck},)
したがって、sLineFromFile
が空でない場合、ファイル ( fFileToCheck
) に が含まれていることがわかりますsStringToCheck
が、行の先頭^
と、その後にカンマが続く場合のみ,
です。
OR
次に、次のような機能を探しています。
sLineFromFile=$(cat "${fFileToCheck}" | grep [^,|]${sStringToCheck}[,|$])
これは、このUnix & Linux SE リンクに基づいて機能すると考えていましたが、代わりに文字を文字どおりに受け取っているように見えます (sLineFromFile
常に空です)。私は次のような多くのバリエーションを試しました:
sLineFromFile=$(cat "${fFileToCheck}" | grep @[^,|]${sStringToCheck},)
sLineFromFile=$(cat "${fFileToCheck}" | grep (^,|)${sStringToCheck},)
sLineFromFile=$(cat "${fFileToCheck}" | grep '[^,|]${sStringToCheck},')
sLineFromFile=$(cat "${fFileToCheck}" | grep [^,|]${sStringToCheck},)
(ここでは の前に文字をテストするだけですsStringToCheck
)。
これをどのように修正すればよいですか?