Tôi có một tệp văn bản lớn trông như thế này:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,3
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,8
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,12
Đầu ra mong muốn là đây:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-03
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-08
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,MI-12
Tôi đã thử các bài đăng có liên quan khác ở đây và trên các cộng đồng khác nhưng không thể có được chính xác những gì tôi muốn.
CẬP NHẬT
Đây là câu hỏi chéo (tôi muốn cả câu trả lời Unix / perl và giải pháp batch / powershell cho việc này.) Có câu trả lời thú vị.
"1 2 3 4" | awk '{$2=$2;print $0}'
cho:1 2 3 4
(chỉ còn 1 khoảng trắng (hoặc OFS) giữa các trường). ex2)echo "1,,,2,3,,,,4" | awk -F',' '{$2=$2;print $0}'
cho:1 2 3 4
(dấu phẩy trở thành khoảng trắng). Có thể có tác dụng phụ khác. Kiểm tra và thực hiện một cách tiếp cận khác (gsub trên một biến sao chép là $ 0, ví dụ) nếu việc đánh cắp một trường có tác dụng phụ bất lợi.