Tôi muốn thay đổi định dạng của mỗi dòng trong một tệp và cũng có thể chạy một thay thế khác trên một trong các nhóm phù hợp.Có cách nào để tổ chức thay thế sed?
Ví dụ: tôi có thể có tệp CSV ba cột đơn giản (không có thoát) mà tôi muốn đặt ở định dạng khác.
sed -r 's/^([a-z]+),([a-z]+),([a-z]+)$/\1: \3 (\2)'
# would turn "comma,separated,values"
# into "comma: values (separated)"
Tuy nhiên, tôi cũng muốn loại bỏ tất cả các nguyên âm từ cột thứ hai, ví dụ: chạy s/[aeiou]//g
trên \2
.
Có giải pháp tốt cho vấn đề thay thế lồng ghép này không? Hãy giả sử rằng cả hai thay thế đều phức tạp và đây chỉ là một ví dụ.
Sed của tôi không phải là GNU sed phiên bản 4.0.
Bạn có thể không hút một sed vào thứ hai không? – NorthGuard
@inTide: Tôi không muốn xóa _all_ nguyên âm, chỉ những nguyên từ cột thứ hai. – Tim
Phải, vì vậy trước tiên bạn loại bỏ tất cả các nguyên âm giữa dấu phẩy và sed thứ hai bạn tạo dấu phẩy đầu tiên ':' và dấu phẩy thứ hai '()'. – NorthGuard