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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.