Awk:Select 仅在一列中包含数字的行并将其相乘为 1000

Awk : Select only row with digits in a column and multiply those for 1000

AIM

我想将第 $3 列的行数(0.16 和 -0.45)乘以 1000! 这避免了将 N/A 乘以 0,在 N/A 所在的位置生成 0!

我正在尝试生成的命令行!

awk -F"\t" '{OFS="\t"}{print , , ~/^[0-9]{3}$*1000/}' > out-put.txt
awk -F"\t" '{OFS="\t"}{print , , ~/^%[0-9]%/$*1000}' > out-put.txt

文件

我有一个包含 3 列的文件:

abc  cat   0.16
lmm  fil   N/A
lmd  ful  -0.45
....continue

搜索输出

abc  cat   160
lmm  fil   N/A
lmd  ful  -450
....continue

使用您显示的示例,请尝试以下 awk 代码。使用三元运算符检查第三个字段是否不是 N/A 然后乘以 1000 否则保持原样。

awk '{=!="N/A"? * 1000:} 1' Input_file

如果您的 Input_file 是制表符分隔的,请尝试以下操作:

awk 'BEGIN{FS=OFS="\t"}{=!="N/A"? * 1000:} 1' Input_file

你可以试试这个awk

awk '!="N/A"{*=1000}1' $file | column -t

输出

abc  cat  160
lmm  fil  N/A
lmd  ful  -450

这是一个 awk 解决方案,它在与 1000 相乘之前检查 </code> 是否为数字:</p> <pre><code>awk 'BEGIN{FS=OFS="\t"} == +0 { *= 1000} 1' file abc cat 160 lmm fil N/A lmd ful -450