2011-02-08 24 views
5

Tôi mới bị lúng túng, và tôi không thể hình dung điều này. Làm thế nào tôi có thể thay thế trong một trường đơn bằng cách sử dụng cụm từ thông dụng?stk awk: thay thế regex trong một trường

Trong perl, tôi có thể gán trường quan tâm cho biến, sau đó là $myvar =~ s/foo/bar/g. Tất nhiên cũng trong perl tôi phải làm quản lý lĩnh vực của riêng tôi, và đó là dễ dàng hơn trong awk.

Để khắc phục sự cố ngay bây giờ, đó là bản ghi tiền của Châu Âu và tôi muốn thay đổi dấu phẩy thành dấu chấm trong trường số tiền. Nhưng tôi chỉ cần nhắm vào trường đó, vì vậy tôi không làm xáo trộn các trường khác mà dấu phẩy có thể được sử dụng làm dấu câu văn xuôi.

Giải pháp có khó khăn hơn tôi tưởng tượng không? Hay đơn giản hơn? Tôi có phải thay đổi thiết bị tách bản ghi hay thứ gì đó dính như thế không?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

6

sub() chấp nhận một số thứ ba là lĩnh vực (hoặc biến) để thay đổi:

$ echo '02/08/2011 7,33 Shopping' | awk '{sub(/,/,".",$2)} 1' 
02/08/2011 7.33 Shopping 
+0

Wow, không chắc chắn làm thế nào tôi bị mất rằng trong O'Reilly của tôi. Nó đây rồi. Phải là người toàn diện hơn. CẢM ƠN BẠN! – rockriver

Các vấn đề liên quan