使用 egrep 在 bash 中查找被空格包围的行中的字符

Find characters in a line which is surrounded by whitespace in bash using egrep

我有一个看起来像这样的文件:

Arjun
A
   A
 A
sdsdA
AA
AAA

我想在两个 sides.Hence 上找到包含被白色 space 包围的 A 的行,为此所需的输出将是:

   A
 A

只有第 3 行和第 4 行应该出现 output.I 尝试了以下操作:

egrep '(^|\s)A($|\s)' filename

并在输出中得到这个:

A
   A
 A

它也以某种方式匹配以单独的 A 开头的第二行。我该如何避免这种情况?

因为您不想 A 开始或结束,所以您不需要 ^$:

~$ egrep '\sA\s' filename
   A  
 A  

假设您在第 2 和第 3 个“A”行的任一侧都有一个实际的 space,并且不以 A 结尾,那么这些中的任何一个都应该可以工作,使用 grep 或 egrep,只匹配 space字,A,space字:

grep " A " filename
grep ' A ' filename

或者使用字符class:

grep '[[:space:]]A[[:space:]]' filename

但是 [[:space:]] class 也许 应该 也匹配所有 "whitespace" (选项卡,newline, vertical tab, form feed, carriage return, and space) 根据 GNU.org's grep manual,但它似乎不匹配我的 grep (GNU grep) 2.16 的换行符,除非然后一行的结尾不是换行符。

显然 GNU.org tells me ‘\s’ 匹配白色 space,它是 [[:space:]]

的同义词

所以这个 [[:blank:]] 应该只匹配 space 或 tab:

grep '[[:blank:]]A[[:blank:]]' filename