2015-10-01 14 views
6

Tôi đang cố gắng tách một tệp lớn dựa trên mẫu. Tôi đang sử dụng lệnh awk cho việc này. Sau khi tạo một số tệp nhất định, nó cung cấp lỗi: Quá nhiều tệp đang mở.Lệnh awk của lệnh shell Linux quá nhiều tệp đang mở

lệnh là:

awk '/pattern here/{i++}{print > "file"i}' /input file 

Ai đó có thể cho tôi biết làm thế nào để đóng những tập tin này? Tôi đã thử sau nhưng nó cho lỗi.

awk '/pattern here/{i++}{print > "file"i}' /input file | close("file"i) 

Cảm ơn bạn.

+0

Bạn cần phải chạy 'close' ** trong ** awk không ở trong một đường ống trên đầu ra. Ngoài ra, bạn có thể muốn nhìn vào 'csplit' để thay thế. –

+0

Có thể trùng lặp [Chia tệp rất lớn thành các tệp nhỏ theo mẫu (bash)] (http://stackoverflow.com/questions/32228798/divide-very-large-file-into-small-ones-following-pattern-bash) –

Trả lời

4

Trước khi bắt đầu vào file tiếp theo, đóng trước một:

awk '/pattern here/{close("file"i); i++}{print > "file"i}' InputFile 
+0

Cảm ơn bạn ... đóng tệp trước khi bắt đầu tệp tiếp theo đã hoạt động ... –

Các vấn đề liên quan