Dấu phân cách đang được thay đổi với các trường


7

Tôi có một tệp có các giá trị được sắp xếp theo cột và được phân tách bằng dấu phẩy , như trong tệp bên dưới:

324,01,1,113333600000,1,,
016,01,1,134954200000,1,,
770,01,1,109069200000,1,,
853,01,1,111518800000,1,,

Khi tôi sử dụng awklệnh sau , dấu phân cách đang được thay đổi từ dấu phẩy sang dấu cách

Mã số:

awk -F, '{$4=$4/1024}{print $0}'

Đầu ra trở thành:

324 01 1 110677343.75 1  
016 01 1 131791210.93 1  
770 01 1 106512890.62 1  
853 01 1 108905078.12 1 

Làm cách nào để thay đổi giá trị của trường mà không thay đổi dấu phân cách?

Câu trả lời:


17

Đặt OFScũng là:

awk -F, -v OFS=, '{$4=$4/1024}1'

Các OFSxác định cách các lĩnh vực đầu ra được giới hạn. Nếu bạn không đặt nó, mặc định là khoảng trắng.


6

Câu trả lời của muru là đúng, nhưng tôi thích sử dụng khối BEGIN cho nhiệm vụ này:

awk 'BEGIN{FS=OFS=","}{$4=$4/1024}1'
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.