sed 匹配模式 N 次

use*_*107 19 sed text-processing

我想将一个文件分成多个块,每个块有 2 个单词。

$cat tmp
word1 word2 word3 word4 word5 word6 word7
$sed -e 's/word. word. /&\n/g' tmp
word1 word2 
word3 word4 
word5 word6 
word7
$sed -e 's/word. \{2\}/&\n/g' tmp
word1 word2 word3 word4 word5 word6 word7
Run Code Online (Sandbox Code Playgroud)

我希望最后一个命令给出与它之前的命令相同的结果。怎么了?

use*_*107 22

抱歉,好像我在发布后就想通了。

它需要是

sed -e 's/\(word. \)\{2\}/&\n/g' tmp
Run Code Online (Sandbox Code Playgroud)

显然需要括号来让 sed{2}在整个模式上应用条件word.,而不仅仅是前面的空格。

  • 或使用 `sed -E 's/(word. ){2}/&\n/g' tmp` (5认同)