Text-Processing
只保留幾位小數部分
我有一個文件,其內容如下所示。
2,0,-1.8433679676403103,0.001474487996447893 3,1,0.873903837905657,0.6927701848899038 1,1,-1.700947426133768,1.5546514434152598
具有四列的 CSV,其中第三列和最後一列是浮點數。
我想去掉整個數字(包括符號),只保留小數部分的前三位,這樣上面的樣本就變成了
2,0,843,001 3,1,873,692 1,1,700,554
我怎樣才能做到這一點?
使用
awk
:awk -F[,.] '{print $1","$2","substr($4,1,3)","substr($6,1,3)}' file
用於
-F
將FS
值設置為逗號,
和點的位置.
substr
將列印點後所需的 3 位數字。
sed 's/-\{,1\}[0-9]*\.\([0-9]\{,3\}\)[0-9]*/\1/g' file
這將查找以可選開頭的字元串,
-
後跟任意數量的數字,後跟一個句點,然後是任意數量的數字,它將從中選擇前三個。另一種方法是替換
[0-9]
為[[:digit:]]
assed 's/-\{,1\}[[:digit:]]*\.\([[:digit:]]\{,3\}\)[[:digit:]]*/\1/g' file