我有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
Run Code Online (Sandbox Code Playgroud)
我想使用 grep 提取仅包含 S-PA 的行。我尝试了以下命令:
grep -w "S-PA" sample.txt
Run Code Online (Sandbox Code Playgroud)
但它给出的输出包含我不想要的所有条目。我想要以下输出
ID=S-PA.path1;Name=S-PA 69 ivcs
Run Code Online (Sandbox Code Playgroud)
请指导我。提前致谢。
使用负前瞻和后瞻。
$ grep -P '(?<![\w-])S-PA(?![\w-])' sample.txt
ID=S-PA.path1;Name=S-PA 69 ivcs
Run Code Online (Sandbox Code Playgroud)
实际上,您-出于单词边界考虑而将其包含在“单词”中。
(?<![\w-])确保S-PA前面没有单词字符 或-。同样(?![\w-])确保以下字符也是如此。