使用grep搜索以字母"s"开头的单词

hur*_*nhu 12 linux grep

我正在尝试使用grep查看文件,并找到以小写字母"s"开头的单词.该文件的片段:

sjpope   pts/2    161.133.12.95    10:21am 43.00s  0.13s  0.01s  man bc
rmschalk pts/3    161.133.9.147    10:22am  1.00s  0.10s  0.02s  vi testb
jntrudel pts/4    161.133.9.11     10:23am  2.00s  0.09s  0.00s  vi testb
tjbanks  pts/5    161.133.9.70     10:41am  8.00s  0.06s  0.04s  -ksh
Run Code Online (Sandbox Code Playgroud)

我希望输出的行用"s"表示.

csh*_*olk 18

对于所有想要搜索以给定字母开头的单词而不是行的单词,这个单行将执行:

grep -E '\bs' file.txt # all words starting with s
grep -E 's\b' file.txt # all words ending with s
Run Code Online (Sandbox Code Playgroud)

我知道这是非标准grep行为(\b正则表达式锚点意味着单词中断不在扩展正则表达式标准中)但它适用于大多数现代系统.


dgl*_*pes 8

使用标准,grep您可以使用(单词开头)和(单词结尾)正则表达式来搜索以 s 开头的单词:\<\>

grep '\<[s][[:alpha:]]*\>' file.txt # Words starting with s
Run Code Online (Sandbox Code Playgroud)

另外,如果你想输出以 s 开头的,你只需使用该^字符:

grep '^s' file.txt # Lines starting with s
Run Code Online (Sandbox Code Playgroud)


Mar*_*bak 5

请尝试以下操作:

grep ^s file.txt
Run Code Online (Sandbox Code Playgroud)