我想用我的值做一些算术运算.这是我的日志文件:
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
Run Code Online (Sandbox Code Playgroud)
我试图将第三和第四列相乘.为了做到这一点,我必须将","(逗号)改为"."(句号).我试图在tr里面运行命令,awk但它给出了一些错误:
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
Run Code Online (Sandbox Code Playgroud)
小智 7
正确的方法是使用正确的语言环境:
LANG=de_DE awk -P '$0 = $3 * $4'
Run Code Online (Sandbox Code Playgroud)
结果
167,2
31,6
0,01
6,66
34,2
1,52
Run Code Online (Sandbox Code Playgroud)
您可以tr在传递到之前运行转换awk:
<mylog.log tr ',' '.' | awk '{print $3*$4}'
Run Code Online (Sandbox Code Playgroud)
要仅执行此操作awk,您可以使用sub:
awk '{sub(/,/, "." ,$3); print $3*$4}' mylog.log
Run Code Online (Sandbox Code Playgroud)