รูปแบบการจับคู่ 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
Cyrus


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.