我需要检查一个文件是否包含一个确切的字符串,例如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)。
我应该如何纠正这个?