grep% thông qua một tập tin


0

Tôi đang chạy một công việc nhập khẩu trên một tệp mysql thực sự lớn mà phần lớn không có ngắt dòng.

Sử dụng danh sách quy trình mysql tôi đã có thể phạt ID của bản ghi hiện đang chèn.

Những gì tôi muốn làm là tìm ra ký tự mà id đó xuất hiện trong tệp để tôi có thể tìm ra phần trăm hoàn thành công việc nhập là gì.

grep -n không giúp được gì vì số dòng không hữu ích vì không có ngắt dòng giữa các lần chèn.

Có bất cứ điều gì tôi có thể làm với grep (hoặc một số lệnh khác) để tìm hiểu xem một chuỗi ký tự khôn ngoan trong một tệp bao xa không?

Câu trả lời:


1

Bạn có thể thay thế tất cả các không gian (hoặc dấu chấm phẩy hoặc ...) với dòng mới và grepwc -lkết quả.

sed -e 's/ /\n/g/' input > result
wc -l < result
grep -n "$id" result

Nếu bạn không muốn tạo một tệp bổ sung, hãy gọi Perl để giải cứu:

perl -e '$/ = " "; /ID/ and print "[$.]" while <>; print "$.\n"' input

Nếu xuất ra một cái gì đó như [145]300, có nghĩa là ID xuất hiện trong bản ghi 145 của 300. $/là dấu tách bản ghi, $.là bộ đếm recourd.


vâng, tôi đã hy vọng không phải tạo toàn bộ tập tin khác dựa trên nó. Đó là một vài hợp đồng dữ liệu.
RobKohr

@RobKohr: Kiểm tra cập nhật.
choroba
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.