Linux 将小于某个阈值的数字替换为零
我有一个.csv格式的大数据表(见下文)。如果它小于某个值,比如说0.1,我想用零替换每列和每行中的数字 谁能帮我一下吗?非常感谢 我想它可以通过sed来完成Linux 将小于某个阈值的数字替换为零,linux,csv,Linux,Csv,我有一个.csv格式的大数据表(见下文)。如果它小于某个值,比如说0.1,我想用零替换每列和每行中的数字 谁能帮我一下吗?非常感谢 我想它可以通过sed来完成 这是GNU awk的一个。假定字段分隔符是一段空间,因此不允许使用空字段: $ gawk -v value=0.1 ' # give treshold values as parameter BEGIN { RS="( +\n?|\n)" } # ever
这是GNU awk的一个。假定字段分隔符是一段空间,因此不允许使用空字段:
$ gawk -v value=0.1 ' # give treshold values as parameter
BEGIN { RS="( +\n?|\n)" } # every field is considered a record
{
ORS=RT # RT stores actualized RS
if($0<value) # comparison
$0=sprintf("0%-" length()-1 "s","") # format data to fit the field
}1' file # output
当您有文本输出时,请显示相关代码并说明确切的问题或错误。仅仅描述是不够的。另请参见.If输入文件是.csv文件。我应该如何修改代码?谢谢
$ gawk -v value=0.1 ' # give treshold values as parameter
BEGIN { RS="( +\n?|\n)" } # every field is considered a record
{
ORS=RT # RT stores actualized RS
if($0<value) # comparison
$0=sprintf("0%-" length()-1 "s","") # format data to fit the field
}1' file # output
BCC_ACR_CR BCC_ACR_CU BCC_ACR_FE BCC_ACR_MN BCC_ACR_MO
0.2826027 0 0.58420346 0 0.2105587
0.27986588 0 0.58501168 0 0.20890705
0.27986588 0 0.58501168 0 0.20890705
0.27986588 0 0.58501168 0 0.20890705
0.28038733 0 0.58196375 0 0.21239142
0.26855376 0 0.60364524 0 0.11205138
0.27220042 0 0.60349573 0 0.11530944
0.36294869 0 0.50515464 0 0
0.36294869 0 0.50515464 0 0
0.40837234 0 0.47202708 0 0
0.3643896 0 0.50431576 0 0
0.3643896 0 0.50431576 0 0
0.35885258 0 0.50978952 0 0