sed відповідність картини N разів


14

Я хочу розділити файл на шматки по 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

Я очікував, що остання команда дасть такий самий результат, як і перед нею. Що не так?

Відповіді:


17

Вибачте, схоже, я зрозумів це лише після публікації.

Це має бути

sed -e 's/\(word. \)\{2\}/&\n/g' tmp

Мабуть, круглі дужки потрібні, щоб sed застосував {2}умову для всього шаблону, word.а не лише для попереднього простору.


3
або скористайтесяsed -E 's/(word. ){2}/&\n/g' tmp
Кіра


1

Для загального випадку збігу N разів:

$ perl -ple '$N=3;s/(\S+ ){$N}\K/\n/g' tmp
word1 word2 word3 
word4 word5 word6 
word7
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.