Tôi đang chạy sed như một phần của tập lệnh trình bao để xóa nhật ký ràng buộc để chèn vào cơ sở dữ liệu.Hạn chế SED thành 10 ký tự đầu tiên của dòng
Một trong những lệnh sed như sau:
sed -i 's/-/:/g' $DPath/named.query.log
này hóa ra là có vấn đề vì nó phá vỡ bất kỳ yêu cầu tài nguyên mà cũng bao gồm một dấu gạch ngang (Tôi đang sử dụng: là một dấu phân cách cho một tuyên bố awk tiếp tục xuống).
Câu hỏi của tôi là làm cách nào để giới hạn lệnh sed ở trên chỉ còn mười ký tự đầu tiên của dòng? Tôi đã không nhìn thấy một chuyển đổi cụ thể mà làm điều này, và tôi là hư không gần đủ tốt với RegEx thậm chí bắt đầu phát triển một trong đó hoạt động. Tôi không thể sử dụng regex để phù hợp với các số trước bởi vì có thể mẫu đó có thể là một phần của yêu cầu tài nguyên. Heck, tôi thậm chí không thể sử dụng kết hợp mẫu cho #### - ## - ## bởi vì, một lần nữa, nó có thể là một phần của tài nguyên.
Bất kỳ ý tưởng nào được đánh giá cao.
Thưa ông, tôi nghĩ rằng sẽ làm điều đó. Cảm ơn nhiều! – MikeH
Hoặc thậm chí (chưa được kiểm tra) 'perl -pe 'substr ($ _, 0, 10) = ~ s /:/-/g' file' – tripleee
@tripleee: Nhận xét của bạn (chưa được kiểm tra) không hoạt động đối với tôi (nhưng tôi không biết perl). –