Grep-w正在忽略连字符[-]

Grep-w正在忽略连字符[-],grep,Grep,我有如下文本文件sample.txt ID=Sam-S-PA.path1;Name=Sam-S-PA 23 Hz42 ID=GlcAT-S-PA.path1;Name=GlcAT-S-PA 45 iu7s ID=TfIIA-S-PA.path1;Name=TfIIA-S-PA 76 5ghz ID=S-PA.path1;Name=S-PA 69 ivcs ID=TyrRS-PA.path1;Name=TyrRS-PA 51 Pqas ID=HisRS-PA.path

我有如下文本文件
sample.txt

ID=Sam-S-PA.path1;Name=Sam-S-PA   23   Hz42
ID=GlcAT-S-PA.path1;Name=GlcAT-S-PA 45   iu7s
ID=TfIIA-S-PA.path1;Name=TfIIA-S-PA 76   5ghz
ID=S-PA.path1;Name=S-PA 69 ivcs       
ID=TyrRS-PA.path1;Name=TyrRS-PA 51 Pqas
ID=HisRS-PA.path1;Name=HisRS-PA 32 Majs
我想使用grep提取只包含S-PA的行。我尝试了以下命令:

grep -w "S-PA" sample.txt
但它给出的输出包含了我不想要的所有条目。我想要以下输出

 ID=S-PA.path1;Name=S-PA 69 ivcs 
请引导我。提前感谢。

使用正则表达式

grep-oE“S-PA(+)”sample.txt


egrep-o“S-PA(+)”sample.txt

似乎要匹配
=S-PA
,后跟一个空格。使用

grep '=S-PA ' sample.txt

其中
[[:blank:][]
匹配常规空格或制表符


请参阅。

使用负片向前看和向后看

$ grep -P '(?<![\w-])S-PA(?![\w-])' sample.txt
ID=S-PA.path1;Name=S-PA 69 ivcs

$grep-P'(?我的解决方案不适合您吗?请检查。
$ grep -P '(?<![\w-])S-PA(?![\w-])' sample.txt
ID=S-PA.path1;Name=S-PA 69 ivcs