mẫu phù hợp với N lần


14

Tôi muốn chia một tập tin thành nhiều phần với mỗi từ 2 từ.

$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

Tôi mong đợi lệnh cuối cùng cho kết quả giống như lệnh trước nó. Chuyện gì thế?

Câu trả lời:


17

Xin lỗi, có vẻ như tôi đã tìm ra nó ngay sau khi đăng.

Nó cần phải

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

Rõ ràng các dấu ngoặc là cần thiết để cho phép sed áp dụng điều kiện {2} trên toàn bộ mẫu word.và không chỉ không gian trước.


3
hoặc sử dụngsed -E 's/(word. ){2}/&\n/g' tmp
Cyrus


1

Đối với trường hợp chung khớp N lần:

$ perl -ple '$N=3;s/(\S+ ){$N}\K/\n/g' tmp
word1 word2 word3 
word4 word5 word6 
word7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.