我试图从一段文本中获取所有单词对。
我有以下正则表达式(\w+) +(\w+),在一段没有标点符号的文本上运行。我的问题是这没有考虑所有可能的对
$ echo "hello dear world" | grep -Eoi "(\w+) +(\w+)"
hello dear
Run Code Online (Sandbox Code Playgroud)
我想要以下
$ echo "hello dear world" | grep -Eoi [some expression]
hello dear
dear world
Run Code Online (Sandbox Code Playgroud)
传统grep不会返回捕获组。
您可以考虑pcregrep使用前瞻和 2 个捕获组:
echo "hello dear world" | pcregrep -o1 -o2 '(\w+)(?=(\h+\w+))'
hello dear
dear world
Run Code Online (Sandbox Code Playgroud)
如果你没有,pcregrep那么你可以使用这个简单的awk:
awk '{for (i=1; i<NF; ++i) print $i OFS $(i+1)}' <<< "hello dear world"
hello dear
dear world
Run Code Online (Sandbox Code Playgroud)