如果我恳求将每一个包含该字母的单词格式化,那就是' w'两次,我该怎么做?
当我尝试所有的时候,我得到的是两个人彼此相邻的话。
我试过了:
grep -P "(?=.*w)(?=.*w)" /usr/share/dict/words
egrep "(?=.*w)(?=.*w)" /usr/share/dict/words
cat /usr/share/dict/words | grep 'w' | grep 'w'
但没有任何东西能给我我想要的结果。我怎么能这样做?
答案 0 :(得分:0)
你可以使用这个grep:
grep -Eo '\bw\w*w\w*\b'
示例:强>
echo 'abcw wowed drew won now wow watch' | grep -Eo '\bw\w*w\w*\b'
wowed
wow
答案 1 :(得分:0)
下面的grep会抓住至少有两个w
的单词。
$ echo 'foo bar wow bar work wallewow' | grep -oP '\S*w\S*w\S*'
wow
wallewow
答案 2 :(得分:0)
要在/usr/share/dict/words
中搜索包含字符w
两次的字词,并在它们之间添加任意字符,
grep 'w.*w' /usr/share/dict/words
您使用的零宽度断言的问题是它不会向前跳过。因此(?=.*w)(?=.*w)
会找到第一个w
字符两次。同样,grep 'w' | grep 'w'
会找到第一个w
字符,并将包含它的行传递给grep
的另一个实例。
(标准文件/usr/share/dict/words
每行包含一个单词,因此我们可以使用" word"当我们真正意味着" line"时,这是{{1和朋友一起操作。真正从自由格式文本中获取单词更多地涉及。)