2011-12-11 33 views
5

trong lập trình kịch bản UNIX, mèo là một lệnh mà có thể kết hợp 2 file với nhau:unix: làm thế nào để mèo từ 2 đầu vào?

cat file1 file2 > file3 

này tạo ra thứ 3 bằng cách kết hợp hai đầu tiên.

cũng có, mèo có thể được sử dụng với ống:

cat file1 | tail -4 

này sẽ liệt kê các 4 dòng cuối cùng của tập tin 1.

câu hỏi: làm thế nào tôi có thể kết hợp 4 dòng cuối cùng của tập tin 1 và 2 thế nào để tạo tệp 3?

Tôi bị mất một chút ở đây: cách cung cấp 2 luồng đầu vào cho mèo?

+1

Bạn đang sử dụng trình bao nào? – Staven

+0

cảm ơn các bạn, tất cả các kịch bản của bạn đều hoạt động! : D – athos

Trả lời

5

Bash có một tính năng process substitution:

cat <(tail -4 file1) <(tail -4 file2) 

Tôi thường sử dụng tính năng này để diff phiên bản một chút thay đổi của hai tập tin.

8

Bạn có thể làm như sau (trong bash):

(tail -4 file1; tail -4 file2) > file3 

này không sử dụng mèo như mỗi câu hỏi của bạn nhưng nó đạt được mục tiêu mà bạn mô tả.

1

Có gì sai với:

cat file1 | tail -4 > ./file3; cat file2 | tail -4 >> ./file3 

?

+3

Trong trường hợp đó, bạn có thể sử dụng: 'tail -4 file1> ./file3; tail -4 ./file2 >>./file3' (chỉ cần sử dụng đuôi và không phải cat/tail) – Renato

2

Bạn có thể sử dụng pee từ moreutils để thực hiện việc này. Đây là giải pháp của tôi

pee 'tail file1' 'tail file2' </dev/null > file3 
+0

Cái này hoạt động với các lệnh không bao giờ kết thúc, như "tail -f" – golimar

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