sed maç desen N kez


14

Bir dosyayı her biri 2 kelimelik parçalara bölmek istiyorum.

$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

Son komutun kendisinden önceki sonuçla aynı sonucu vermesini bekledim. Yanlış olan ne?

Yanıtlar:


17

Maalesef, gönderdikten hemen sonra anladım.

Olması gerekiyor

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

Görünüşe göre parantezler, yalnızca önceki boşlukta değil {2}, tüm desene koşul uygulamak için gereklidir word..


3
veya kullanınsed -E 's/(word. ){2}/&\n/g' tmp
Cyrus


1

N kez eşleşmenin genel durumu için:

$ perl -ple '$N=3;s/(\S+ ){$N}\K/\n/g' tmp
word1 word2 word3 
word4 word5 word6 
word7
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.