cuốn sách gpt4 ai đã làm

Xóa dòng đầu tiên trong tệp nếu mẫu khớp

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:31:57 29 4
mua khóa gpt4 Nike

Tôi muốn biết liệu có cách nào hiệu quả để xóa dòng đầu tiên trong tệp khớp với mẫu đã chỉ định hay không. Ví dụ: tôi có một tệp chứa dữ liệu ở dạng sau:

Ngày,Mở,Cao,Thấp,Đóng,Âm lượng,Điều chỉnh.Volume
2012-01-27,42,38,42,95,42,27,42,68,2428000,42,68
2012-01-26,44,27,44,85,42,48,42,66,5785700,42,66
.
.
.

Tôi muốn xóa hàng đầu tiên, chỉ khi nó chứa văn bản (như trong ví dụ về hàng đầu tiên) và giữ nguyên nếu nó chỉ chứa số (như trong các hàng còn lại). Nhiệm vụ này rất đơn giản và tôi đã hoàn thành nó bằng cách áp dụng mã hòa bình sau đây miễn là nó không chứa Ngày chế độ, nó sẽ viết từng dòng $tệp mới:

trong khi( <$origFile> )
{
chomp($_);
in $newFile $_ trừ khi ($_ =~ m/Date/g)
}

Vì vậy, như tôi đã đề cập, điều đó sẽ hoàn thành công việc. Tuy nhiên, việc đọc từng dòng trong toàn bộ file có vẻ lãng phí tài nguyên khi biết rằng văn bản chỉ có thể xuất hiện ở dòng đầu tiên.

Có cách nào để hoàn thành nhiệm vụ này hiệu quả hơn?

LƯU Ý: Tôi đã tìm thấy một câu hỏi gần như tương tự đây , nhưng vì tôi muốn mã của mình cũng có sẵn trên Linux và Windows nên tôi sử dụng sed Không giúp tôi ở đây.

Cảm ơn trước!

câu trả lời hay nhất

$.Có thể được sử dụng để xác định xem dòng đầu tiên của tệp có đang được xử lý hay không.

Perl -i.bak -ne'print if $. != 1 || tập tin
Tuy nhiên, có vẻ như việc đọc từng dòng trong toàn bộ tệp sẽ rất lãng phí tài nguyên

Không thể xóa từ bất cứ đâu ngoại trừ phần cuối của tập tin. Để xóa từ đầu hoặc giữa, mọi thứ theo sau trong tệp cần phải được di chuyển, nghĩa là nó phải vừa có thể đọc vừa có thể ghi.

Bạn chỉ có thể tránh làm việc nếu dòng đầu tiên không khớp (không làm gì cả). Nếu cần xóa dòng này thì phải sao chép toàn bộ tập tin.

Về thuật toán - xóa dòng đầu tiên trong tệp nếu nó khớp với mẫu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/9148478/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress