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