首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中使用awk命令中的tr命令

在Linux中使用awk命令中的tr命令
EN

Stack Overflow用户
提问于 2014-04-28 12:17:31
回答 2查看 2.7K关注 0票数 1

我想用我的值做一些算术运算。这是我的日志文件:

代码语言:javascript
复制
SYSAUX                                1050        3,04        55       996         5        95
UNDOTBS1                               420         ,08       395        25        94         6
USERS                                    5         ,01         1         4        19        81
SYSTEM                                 730        2,22         3       727         0       100
EXAMPLE                                346         ,95        36       310        10        90
UNDOTBS2                                50         ,04        38        12        77        23

我想把第三列和第四列相乘。为了做到这一点,我必须将",“(逗号)改为”.“(句号)。我试图在tr内部运行awk命令,但它给出了一些错误:

代码语言:javascript
复制
cat mylog.log |awk '{mul= $3 * ${4}|tr  "," "\\."; print mul}'


awk: {mul= $3 * ${4}|tr  "," "\\."; print mul}
awk:             ^ syntax error
awk: {mul= $3 * ${4}|tr  "," "\\."; print mul}
awk:                ^ syntax error
awk: cmd. line:1: {mul= $3 * ${4}|tr  "," "\\."; print mul}
awk: cmd. line:1:                                          ^ unexpected newline or end of string
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-28 12:52:07

正确的方法是使用适当的区域设置:

代码语言:javascript
复制
LANG=de_DE awk -P '$0 = $3 * $4'

结果

代码语言:javascript
复制
167,2
31,6
0,01
6,66
34,2
1,52

awk make it less system dependant

票数 6
EN

Stack Overflow用户

发布于 2014-04-28 12:25:15

您可以在传递给tr之前运行awk转换。

代码语言:javascript
复制
<mylog.log tr ',' '.' | awk '{print $3*$4}'

要在awk中这样做,您可以使用sub

代码语言:javascript
复制
awk '{sub(/,/, "." ,$3); print $3*$4}' mylog.log
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23340933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档