如何 grep 或 sed 每个以 w 开头的单词?

如何 grep 或 sed 每个以 w 开头的单词?

我有一个文件,其中包含一个故事,我需要练习使用 grep 或 sed。我已经尝试过了egrep -i '^w.' file.txt,它得到了大部分单词,但我需要每个以 w 开头的单词(“Paperwork”无效,“working”有效)。

答案1

可能您需要一个正则表达式来隔离单词开头 ( \b) 并识别单词字符,例如\S,请参阅文档了解更多。所以你可以使用命令

$ grep -oE '\bw\S*' inputfile

使用-o,结果将只是匹配部分,每个匹配都在新行上(甚至来自一个输入行),并且-E能够使用“扩展正则表达式”(与使用 相同egrep)。

更严格的“单词”匹配可能会使用[[:alpha:]]而不是\S

$ grep -oE '\bw[[:alpha:]]*' inputfile

这将导致英语字符集中出现以“w”开头的“单词”(字符序列)。

相关内容