我正在尝试使用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正则表达式锚点意味着单词中断不在扩展正则表达式标准中)但它适用于大多数现代系统.
使用标准,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)