Tôi có hai tệp csv/văn bản mà tôi muốn tham gia. Cả hai đều chứa cùng một dòng đầu tiên. Tôi đang cố gắng tìm ra cách sử dụng sed và cat để tạo ra một tệp được hợp nhất, nhưng chỉ với một bản sao của dòng đầu tiên. Và tôi có một thời gian với cú pháp. Bất kỳ trợ giúp sẽ được đánh giá rất nhiều :-D! Cảm ơn, AndrewFile1 + (File2 - dòng đầu tiên)> File3
Trả lời
này sẽ kết hợp các file data1.txt
và data2.txt
trong tập tin merged.txt
, bỏ qua dòng đầu tiên từ data2.txt
. Nó sử dụng awk nếu bạn là ok với nó:
(cat data1.txt; awk 'NR>1' data2.txt) > merged.txt
awk gắn tất cả các dòng với số dòng> 1 từ tập tin data2.txt
nộp merged.txt
.
NR
là biến được xây dựng sẵn, viết tắt của số dòng hiện tại của tệp đang được xử lý. Nếu biểu thức Boolean NR > 1
là true, awk sẽ in dòng ngầm.
Nếu bạn không quan tâm về việc giữ gìn data1.txt
còn nguyên vẹn, bạn chỉ có thể thêm tập tin thứ 2 của bạn (trừ dòng đầu tiên của nó) và giảm xuống còn này:
awk 'NR>1' data2.txt >> data1.txt
Một tùy chọn khác với awk:
awk 'NR==FNR || FNR>1' file1.txt file2.txt .. fileN.txt
Điều này in tất cả các dòng trong tệp đầu tiên HOẶC bất kỳ dòng nào trong các tệp tiếp theo sau dòng đầu tiên.
điều gì sẽ xảy ra nếu tôi làm điều này: 'awk 'NR == FNR || FNR> 1 '* .txt' –
Bạn sẽ dựa vào thứ tự các tệp được khớp với tập tin globbing. Nếu tất cả chúng đều chứa các dòng đầu tiên giống nhau, thì điều này sẽ an toàn. Tại sao bạn không thử nó và xem điều gì xảy ra? – ghoti
giải quyết với một dòng '1 d' có nghĩa là xóa dòng đầu tiên trong file2
lệnh sau sẽ nối kết quả để file1
sed '1 d' file2 >> file1
Bạn đang sửa đổi cả hai 'file1' và' file2' bằng lệnh này - điều này có thể hoặc có thể không ổn với OP. Tốt hơn là cung cấp cả hai tùy chọn (một tùy chọn khác không thay đổi một trong hai tệp gốc). – Levon
@Levon: không, bạn không sửa đổi 'tệp2' tại đây. – tripleee
@tripleee Chỉ cần thử nghiệm nó, nó không * xóa * nhưng thay vì không * hiển thị * dòng đầu tiên .. đã nhận nó. Có lẽ có thể được phrased tốt hơn trong câu trả lời mặc dù. – Levon
tôi muốn nói là giải pháp đơn giản nhất là:
(cat file1.txt ; tail -n +2 file2.txt) > file3.txt
Có ưu điểm là chỉ rõ những gì bạn đang làm: in toàn bộ tệp đầu tiên, sau đó in tất cả trừ dòng đầu tiên của cond tập tin, viết đầu ra cho tập tin thứ ba.
Wow !!! Cảm ơn mọi người!!!!!!! :-D –
- 1. Trong UNIX, "cat file1> file1 làm gì?"
- 2. Làm thế nào để loại bỏ hàng đầu "./" trong unix "tìm"?
- 3. Nối các tệp văn bản với dòng lệnh của Windows, thả các dòng đầu tiên
- 4. unix: làm thế nào để mèo từ 2 đầu vào?
- 5. Có thể hiển thị số dòng trong đầu ra diff cạnh nhau không?
- 6. Hợp nhất hai tệp với mèo mà không có dòng mới
- 7. Thêm dòng trống sau mỗi kết quả trong grep
- 8. Nối các tệp và chèn dòng mới vào giữa các tệp
- 9. Làm thế nào để bỏ qua các dòng bắt đầu bằng một chuỗi với diff?
- 10. os.path.abspath ('file1.txt') không trả lại đúng đường dẫn
- 11. PHP require() tương đối lỗi đường dẫn
- 12. khác biệt trong khi bỏ qua các mẫu trong một dòng, nhưng không phải toàn bộ dòng
- 13. Lập trình vỏ: Cách sử dụng tìm trong cá?
- 14. Khác nhau cho 3 tệp nhị phân
- 15. Cắt đầu/cuối dòng, dán lên đầu/cuối dòng
- 16. Perl readdir theo thứ tự
- 17. cách chuyển hướng đầu ra của lệnh sang hai tệp
- 18. Padding Rỗng Dòng trong Unix Tham gia hoạt động
- 19. JAXB: Nguyên soái đầu ra XML với thụt đầu dòng tạo ngắt dòng trống trên dòng đầu tiên
- 20. so sánh hai tệp và nhận kết quả cho cùng một dòng
- 21. Lệnh Linux để sao chép một tệp vào nhiều tệp
- 22. Cách tìm các dòng trùng lặp trên 2 tệp khác nhau? Unix
- 23. Chuyển đổi một nhóm mục thành một chuỗi phân cách
- 24. Cách cam kết tất cả các tệp ngoại trừ một tệp với SVN
- 25. Xóa dòng đầu tiên jtextarea
- 26. Emacs Haskell thụt đầu dòng
- 27. Làm cách nào để bỏ qua hoặc bỏ qua lỗi trong javascript/jquery?
- 28. Dòng lệnh Python: bỏ qua thụt đầu dòng
- 29. Dòng lệnh Python 'dòng đầu vào tập tin'
- 30. Cách đọc từ dòng đầu vào chuẩn theo dòng?
Hoặc, bạn có thể sử dụng 'đuôi -n + 2' thay vì 'awk' NR> 1''. –
@ TannerL.Swett Neat .. Tôi đã suy nghĩ đầu tiên của việc sử dụng 'đầu' hoặc' đuôi' bằng cách nào đó, nhưng tôi đã chắc chắn về cách làm điều này với 'awk'. Và dĩ nhiên nếu OP không quan tâm đến việc giữ 'data1.txt' thì giải pháp có thể bỏ qua lệnh đầu tiên và chỉ nối thêm tệp thứ hai (dòng thứ nhất) vào tệp đó. – Levon